我有NSManagedObject
我要覆盖其中一个属性的getter,因为我想对该属性的返回值进行一些计算:
- (NSNumber *)distanceFromCurrentUserLocation {
[self willAccessValueForKey:@"distanceFromCurrentUserLocation"];
// Update Distance
CLLocation *placeLocation = [[CLLocation alloc] initWithLatitude:self.coordinate.latitude longitude:self.coordinate.longitude];
CLLocation *currentLocation = [[MyHelper sharedService] currentLocation];
CLLocationDistance distance = [placeLocation distanceFromLocation:currentLocation];
[self didAccessValueForKey:@"distanceFromCurrentUserLocation"];
return @(distance);
}
然后我执行获取请求并设置sortDescriptors
:
// Initialize Fetch Request
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"ZSSCDPerson"];
// Sorting
[request setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"distanceFromCurrentUserLocation" ascending:ascending]]];
排序描述符不会调用此方法吗?
答案 0 :(得分:0)
您无法对非存储值进行获取请求。
您有两种选择。
计算并存储该值,您需要在当前用户位置发生变化时随时更新。可能不适合用户位置变化很大的东西。
获取然后排序。将所有对象提取到数组中,然后在内存中排序。