使用NSFetchedresultsController对“瞬态”字段进行排序

时间:2012-11-10 20:34:19

标签: objective-c cocoa-touch core-data nsfetchedresultscontroller

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

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

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

1 个答案:

答案 0 :(得分:10)

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

请参阅“核心数据编程指南”中的Fetching Managed Objects

  

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

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

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