有没有办法使用'瞬态'字段或类似的东西,并以某种方式相应地使用NSFetchedResultsController进行排序。我想做以下事情:
我在数据库中有位置。当一个人打开列表时,我想在最上面显示最近的位置,然后根据距离进行排序。但很明显,这取决于用户的位置,所以我不能使用静态字段。我希望使用瞬态字段,因为您可以使用节标题。
有没有人可以为这种情况提供解决方案或解决方法?
答案 0 :(得分:10)
您不能在SQlite基本核心数据存储的获取请求中使用瞬态属性。
请参阅“核心数据编程指南”中的Fetching Managed Objects:
您无法使用基于瞬态属性的谓词进行提取 (尽管您可以使用瞬态属性在内存中进行过滤 你自己)。 ...总而言之,如果直接执行提取,则应该 通常不会添加基于Objective-C的谓词或排序描述符 获取请求。相反,你应该将这些应用于结果 获取。
您可以为sectionNameKeyPath
使用瞬态属性,但即使这样,您也需要基于持久属性的节的第一个排序描述符。
因此,唯一的解决方法可能是获取所有对象,然后对获取的数组进行排序。但是当然你不再拥有获取结果控制器的优势了。