我在CoreData MyObject
中有一个实体,其中包含属性latitude
和longitude
。
我想使用NSFetchedResultsController
进行抓取,按照MyObject
距离用户当前位置的距离对抓取进行排序。
但是,我不知道在排序描述符的Key
部分放什么。
我不想比较对象的特定键。我想比较对象本身。
我不确定如何在不重新填充记录的距离字段的情况下这样做。
我正在尝试使用此代码...
[[NSSortDescriptor alloc] initWithKey:@"." ascending:YES comparator:^NSComparisonResult(MyObject *object1, MyObject *opject2) {
// stuff here
}];
但由于内存压力(lol),它崩溃了应用程序。
显然使用@"."
是不正确的,但有没有办法做到这一点?
或者使用不同的方法有更好的方法吗?
答案 0 :(得分:2)
如果您不想按键对对象进行排序,而是对对象进行排序,则不应使用排序描述符。只需获取结果数组,然后对该数组进行排序。当然,您的自定义对象MyObject应该实现isEqual才能执行此操作。
另一种方法是向MyObject添加一个名为distance
的新密钥,然后将其用作排序描述符的密钥。
executeFetchRequest
获取数据库中的所有位置。 distance
performFetch
fetchedObjects
使用FRC的distance
排序。希望这适合你。