我有一个核心数据模型:
ParentObject <--->> ChildObject
两者ParentObject
都有ChildObject
一个属性levelNumber
:
typedef enum {
Primary,
Secondary,
Tertiary
} LevelNumber;
我还有一种方法可以在 ParentObject 和 childObject 中将级别编号从 int 转换为 string:
-(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
。 - 如果 the
ParentObject
和 all theChildObjects
arePrimary
,则将部分名称显示为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,还是别的什么?