我使用一个FetchedResultsController来执行我的提取,我希望它按降序排序对象。如果在创建NSSortDescriptor时使用自定义比较器块,则会得到表示'unsupported NSSortDescriptor (comparator blocks are not supported)'的错误。我不想获取我的项目并将它们存储在数组中,对它们进行排序,然后使用它们,因为这违背了使用FetchedResultsController的目的。如何创建将按降序排序的NSSortDescriptor?
另外,为什么NSSortDescriptor框架中甚至有一个方法允许使用比较器块,如果它实际上不允许使用它呢?还是仅仅因为您不能将它们用于获取请求?
发布于 2013-09-20 23:39:11
sqlite存储不支持NSSortDescriptor的基于块的方法。持久存储文档(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html)具有以下内容:
另一方面,SQL存储将谓词和排序描述符编译为SQL,并计算数据库本身中的结果。这主要是为了性能,但这意味着评估发生在非Cocoa环境中,因此依赖Cocoa的排序描述符(或谓词)无法工作。
您必须使用-NSSortDescriptor sortDescriptorWithKey:提升:方法。
基于块的方法可以用于排序数组和内存对象中的其他对象,我认为从内存中可以存储二进制Core数据存储,因为从技术上讲,这些对象也在内存中
https://stackoverflow.com/questions/18927309
复制相似问题