对实现比较的对象的 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 的 fetchLimit?
带有 NSDictionaryResultType 的 NSFetchRequest 在单元测试时返回空结果