使用 NSFetchedResultsController 对核心数据对象进行排序

Posted

技术标签:

【中文标题】使用 NSFetchedResultsController 对核心数据对象进行排序【英文标题】:Sorting Core Data Objects using NSFetchedResultsController 【发布时间】:2013-04-11 06:26:35 【问题描述】:

我有两个实体如下

项目 > 类别

每个项目可能有多个类别。

例如有 5 个项目,每个项目的排序类别为 release_Date。我想根据 release_Date 对所有这 5 个项目进行排序,表视图标题作为每个项目的 release_Date 值。

我想根据用户从弹出窗口中选择的类别值对这些项目进行排序。我还想在分段表视图中显示排序后的对象,表头是选择的类别值。

我为此使用 nsfetchedresultscontroller。我能够根据项目的名称对项目进行排序。但是我发现使用关系属性对它们进行排序没有运气。

任何形式的帮助都是可观的。

【问题讨论】:

【参考方案1】:

如果我正确理解你的模型,你可以很容易地使用多个排序描述符来做到这一点。

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"Categories.release_Date" ascending:NO];
NSArray *sortDescriptors = @[sortDescriptor1, sortDescriptor2];

[fetch setSortDescriptors:sortDescriptors];

【讨论】:

以上是关于使用 NSFetchedResultsController 对核心数据对象进行排序的主要内容,如果未能解决你的问题,请参考以下文章

核心数据保存竞争条件错误

在 Swift 3 中难以配置 NSFetchedResultsController

为啥 beginUpdates/endUpdates 会重置表视图位置以及如何阻止它这样做?

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?