对实现比较的对象的 NSFetchRequest 的结果进行排序:

Posted

技术标签:

【中文标题】对实现比较的对象的 NSFetchRequest 的结果进行排序:【英文标题】:Sorting the results of an NSFetchRequest of objects that implement compare: 【发布时间】:2015-05-26 21:25:56 【问题描述】:

我有一个实现compare: 消息的NSManagedObject 子类。我想检索这些对象并使用此比较方法对它们进行排序,但显然我必须为NSSortDescriptor 提供key

我不想提供任何key,因为对象本身已经知道如何比较自己。

如果我提供 nil 作为键的键:

r.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:nil
                                                        ascending:YES                                                        selector:@selector(compare:)]];

我收到以下错误:

失败:((62)等于([[self.lib tags] count]))失败:投掷 “实体中找不到密钥路径#self”

如何确保NSSortDescriptor 忽略任何key 而只使用compare:

【问题讨论】:

【参考方案1】:

您是否尝试提供密钥@"self"

【讨论】:

【参考方案2】:

问题是我使用的是 SQLite 存储,而您只能在依赖 SQLite 存储的 NSFetchRequest 中使用建模属性。

这非常令人困惑,因为它在我的测试中有效(我使用的是 In Memory 存储)并且在应用程序本身中惨遭失败。更好的错误描述会节省大量时间。

【讨论】:

以上是关于对实现比较的对象的 NSFetchRequest 的结果进行排序:的主要内容,如果未能解决你的问题,请参考以下文章

按关系属性对 NSFetchedResultsController 排序? NSFetchRequest NSSortDescriptor

基于数组属性大小的 NSFetchRequest

如何取消设置 NSFetchRequest 的 fetchLimit?

带有 NSDictionaryResultType 的 NSFetchRequest 在单元测试时返回空结果

NSFetchRequest 在第一次运行时返回对象,但以后不返回

NSFetchRequest - 通过关系获取所有对象