我使用NSFetchedResultsController将实体绑定到UITableViewController.我想要做的是将结果按距离分配到给定的CLLocationCoordinate2D.在一个非常理想的场景中,我能够刷新该列表以基于新位置重新计算排序.因此,这种类型将依赖于两个键,以及第三个“静态”变量(一个在集合中的项目之间不变的变量).
如果我用NSSortDescriptors排序任意列表,我想我可以弄清楚如何做到这一点.但是,我不控制NSFetchedResultsController中如何使用排序描述符.
有没有办法可以配置我的实体,我的NSFetchedResultsController,我的NSSortDescriptors等来完成这个?我怀疑答案不在于创建一个花哨的NSSortDescriptor,而是在实体中创建一个瞬态属性来表示与我的距离,并定期重新计算该属性.但是,我对核心数据足够新,我不确定如何做到这一点(迭代所有实体并重新计算字段).我也不确定NSSortDescriptors是否可以处理Transient属性.
解决方法
对(基于SQLite的)Core Data存储的获取请求不能使用基于瞬态属性或基于Objective-C的谓词的排序描述符.
如果您不想失去获取结果控制器的优点(如动画表视图更新,自动分组到部分等),您必须预先计算到当前位置的距离并将其存储在(持久)属性中你的对象
或者,您可以获取所有对象并在内存中对它们进行排序.在这种情况下,您可以使用任意排序描述符.但是这不能与获取的结果控制器结合使用,因此您必须在托管对象上下文中注册更改并在必要时重新加载表.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。