核心数据,对一对多子对象进行排序

Shi*_*zam 10 iphone xcode core-data objective-c

所以,假设我有一个父母孩子的存储,父母与孩子(parent.children)有一对多的关系,他们都有名字.现在,在父母的初始提取中,我可以指定排序描述符以按名字顺序将它们恢复,但我如何按顺序请求子项?如果我做了一个[parent.children allObjects]它只是让它们混淆了,我每次都必须对事实进行排序.

谢谢,山姆

sho*_*sti 16

如果您只想使用NSArray而不是NSFetchedResultsController,还有另一种方法:

NSSortDescriptor *alphaSort = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
NSArray *children = [[parent.children allObjects] sortedArrayUsingDescriptors:[NSArray arrayWithObject:alphaSort]];
Run Code Online (Sandbox Code Playgroud)


Tim*_*tis 11

山姆,

如果我正确地阅读了您的问题,您需要设置一个fetch,它返回特定父级子项的排序列表.为此,我将为"children"实体设置一个提取,然后使用谓词来限制结果:

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:[NSEntityDescription entityForName:@"children" inManagedObjectContext:moc]];
[request setSortDescriptors:[NSArray initWithObject:[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES]];
[request setPredicate:[NSPredicate predicateWithFormat:@"(parent == %@)", parent]];
Run Code Online (Sandbox Code Playgroud)

显然,您的实体和属性名称可能不同.在最后一行中,父变量应该是对其所需子项的父级的NSManagedObject实例的引用.