使用NSFetchedresultController对"瞬态"字段进行排序

Luu*_*sen 8 cocoa-touch core-data objective-c nsfetchedresultscontroller

有没有办法使用'瞬态'字段或类似的东西,并以某种方式相应地使用NSFetchedResultsController进行排序.我想做以下事情:

我在数据库中有位置的位置.当一个人打开列表时,我想在最上面显示最近的位置,然后根据距离进行排序.但很明显,这取决于用户的位置,所以我不能使用静态字段.我希望使用瞬态字段,因为您可以使用节标题.

有没有人可以为这种情况提供解决方案或解决方案?

Mar*_*n R 10

您不能在SQlite基本核心数据存储的获取请求中使用瞬态属性.

请参阅"核心数据编程指南"中的" 获取受管对象 ":

您无法使用基于瞬态属性的谓词进行提取(尽管您可以使用瞬态属性自行在内存中进行过滤)....但是,总而言之,如果直接执行提取,通常不应将基于Objective-C的谓词或排序描述符添加到提取请求中.相反,您应该将这些应用于获取的结果.

您可以使用transient属性sectionNameKeyPath,但即使这样,您也需要基于持久属性的节的第一个排序描述符.

因此,唯一的解决方法可能是获取所有对象,然后对获取的数组进行排序.但是当然你不再拥有获取结果控制器的优点.