Итак, я получил сущности уровня и плитки. Уровень имеет множество отношений с Tile. Плитка имеет свойство index.
Сейчас я использую этот код для сортировки массива тайлов уровня:
- (NSArray *)sortedTiles
{
NSMutableArray *sortedTiles = [NSMutableArray arrayWithArray:[self.tiles allObjects]];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"index" ascending:YES];
[sortedTiles sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
return sortedTiles;
}
Это работает, но я хочу иметь возможность получить одну плитку с определенным индексом, поэтому я написал этот метод в Level.h:
- (Tile *)tileWithIndex:(NSInteger)index;
Реализация довольно проста:
- (Tile *)tileWithIndex:(NSInteger)index
{
NSArray *sortedTiles = [self sortedTiles];
Tile *tile = [sortedTiles objectAtIndex:index];
return tile;
}
Теперь, конечно, это не самый эффективный способ сделать это, потому что массив плиток должен каждый раз выделяться и сортироваться, поэтому я подумал: если я просто добавлю переменную экземпляра в Level, 'sortedTiles', тогда Мне не придется восстанавливать его каждый раз. Но Level является подклассом NSManagedObject, так что это возможно и / или целесообразно сделать?