NSSortDescriptor 与关系

Posted

技术标签:

【中文标题】NSSortDescriptor 与关系【英文标题】:NSSortDescriptor with relationship 【发布时间】:2012-09-04 17:02:30 【问题描述】:

在我的 CoreData 模型中有 3 个实体

与 Sections 实体有 section 关系的 Formation 和与 Chapters 实体有 Chapters 关系。

所以一个编队包含 1 或 n 个包含 1 或 n 章的部分

在我的实体部分中,有一个sortNB 属性(一种id),所以我想在我的请求中对我的部分进行排序。

我尝试过:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Formations" inManagedObjectContext:_managedObjectContext];
[request setEntity:entity];


NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"sections.sortNB" ascending:YES];
[request setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"sections", nil]];
[request setSortDescriptors:[NSArray arrayWithObject:sort]];


NSArray *forms = [[_managedObjectContext executeFetchRequest:request error:nil]mutableCopy];

但出现错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'

我该如何继续?

我也想在我的章节实体中插入相同的数字以对其进行排序,但首先,让我们为章节解决它:p

谢谢

【问题讨论】:

那么你的sortNB到底是什么,你在哪一行得到错误?您可能会将一组内容与单个内容进行比较。 在最后一行执行请求时出现错误。 sortNB 是字符串类型,但如果需要,我可以将其转换为 NSNumber。每个编队有 1 或 n 个部分,包含 1 或 n 个章节 您正在获取Formations 对象,这些对象无法按sections.sortNB 排序,因为每个结构都与多个部分相关。 【参考方案1】:

好的,所以我不是在我的请求中而是在使用之后对我的对象进行排序

NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"sortNB" ascending:YES]];

NSArray *sortedRecipes = [[[formation sections] allObjects] sortedArrayUsingDescriptors:sortDescriptors];

它有效。

感谢您的帮助。

【讨论】:

以上是关于NSSortDescriptor 与关系的主要内容,如果未能解决你的问题,请参考以下文章

NSSortDescriptor 按核心数据对多关系中的项目数排序

NSFetchedResultsController 与 NSSortDescriptor 一对一

NSSortDescriptor 和多对多关系

用于核心数据一对多关系的 NSSortDescriptor

NSPredicate NSSortDescriptor 与多关系

iPhone:无法对多对关系进行 NSSortDescriptor。如何排序?