Coredata和关系的自动排序

时间:2014-10-17 11:16:02

标签: ios objective-c core-data entity-relationship

我有一个有多个点的托管对象导览。 当我加载点以在表格中显示它们时,我将其用作我的数据tour.points。

每个点都有一个字段' level'表明它们应该出现的顺序。 如何根据point.level自动排序tour.points?

我是否需要使用排序说明进行单独的提取,还是有直接的方法?

2 个答案:

答案 0 :(得分:2)

使用Core Data填充表格视图的最佳方法是NSFetchedResultsController。 FRC有一个获取请求,您可以附加谓词和排序描述符。

在检查"使用核心数据"时,您可以从Xcode模板中复制一些现成的示例代码。

在获取的结果控制器创建方法中,添加谓词和排序描述符。我假设您正在获取一个名为Point的实体,该实体与Tour具有一对一的关系。

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"tour = %@", tourObject];
fetchRequest.sortDescriptors = @[[NSSortDescriptor 
    sortDescriptorWithKey:@"level" ascending:YES]];

答案 1 :(得分:0)

根据我的经验,我相信你必须单独排序。作为参考,您可以使用NSPredicate过滤数组:

http://www.infragistics.com/community/blogs/stevez/archive/2013/10/21/ios-objective-c-filtering-a-nsarray-using-nspredicate.aspx

我希望你将要做的事情将是这样的:

NSSortDescriptor *level = [[NSSortDescriptor alloc] initWithKey:@"level" ascending:YES];
NSArray *pointSortedByLevel  = [results sortedArrayUsingDescriptors:[NSArray arrayWithObjects:level, nil]];

其中,结果是您的对象游览中找到的NSArray积分

相关问题