У меня есть базовая модель данных как таковая: ParentObject <--->> ChildObject
И ParentObject
, и ChildObject
имеют атрибут levelNumber
как:
typedef enum {
Primary,
Secondary,
Tertiary
} LevelNumber;
У меня также есть метод для преобразования номера уровня из int в строку как в ParentObject, так и в childObject:
-(void) levelString
{
switch(self.levelNumber)
{
case Primary: return @"Primary";
case Secondary: return @"Secondary";
case Tertiary: return @"Tertiary";
default: return @"Error";
}
}
Теперь у меня есть FetchedResultsController в табличном представлении, в котором перечислены ParentObject
. Что я пытаюсь получить в названии раздела:
- Если
ParentObject
равноSecondary
илиTertiary
, покажите название раздела какSecondary
илиTertiary
. - Если
ParentObject
равноPrimary
, но любой изChildObjects
равенSecondary
илиTertiary
, укажите название раздела какSecondary
илиTertiary
. - Если
ParentObject
и всеChildObjects
равныPrimary
, отображать название раздела какPrimary
Это довольно просто, если бы мне нужно было только заглянуть в levelNumber
из ParentObject
, что-то вроде следующего:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"ParentObject"];
NSSortDescriptor *levelNumSD = [NSSortDescriptor sortDescriptorWithKey:@"levelNumber" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObjects:levelNumSD, nil];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:myContext
sectionNameKeyPath:@"levelString"
cacheName:nil];
Я понимаю, что ограничение в FRC заключается в том, что результат SortDescriptor должен возвращать результаты в том же порядке, в котором хотелось бы отображать. Как я могу включить сюда проверки ChildObject
. Будет ли это новый вид SortDescriptor или что-то еще?
sectionLevelNumber
в вашей родительской объектной модели. - person Bala   schedule 29.06.2013sectionLevelNumber
сам по себе не будет хранить какое-либо значение, но его геттер фактически проверитlevelNumber
изParentObject
, а также всеChildObjects
и увидит, какой номер уровня вернуть. Это будет проблемой, потому что при первой выборке FRC ожидает, что значения будут сохранены в базе данных, а не получены во время выполнения. - person Devang   schedule 29.06.2013