2014-10-17 55 views
0

我有一个管理对象游览有很多点。 当我加载要显示在表格中的点时,我用作我的数据游览点。Coredata和关系的自动排序

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

我是否需要对排序描述进行单独的提取,还是有直接的方法?

回答

2

使用核心数据填充表格视图的最佳方式是NSFetchedResultsController。 FRC具有一个获取请求,您可以将请求附加到谓词和排序描述符。

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

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

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

谢谢,我只是想知道是否会有'注释'的方式,如JPA。但是额外的请求不是问题,我已经有了功能。 – 2014-10-18 12:53:15

+0

我不明白在这方面的“注释”。 – Mundi 2014-10-18 13:24:48

+0

在JPA中,您可以注释@OrderBy(“lastname ASC”)这样的字段,因此该字段在被调用时会自动排序。保存必须做一个额外的查询。 – 2014-10-18 15:34:30

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在您的对象中找到的积分之旅游览