【发布时间】:2010-05-07 11:53:12
【问题描述】:
我正在开发使用 CoreData 的应用程序。存在保存纬度和经度值的位置实体。我想获取那些按到用户位置的距离排序的实体。 我试图将排序描述符设置为距离公式 sqrt ((x1 - x2)^2 + (y1 - y2)^2),但它失败了,出现异常“... keypath ... not found in entity”。
NSString *distanceFormula = [NSString stringWithFormat:@"sqrt(((latitude - %f) * (latitude - %f)) + ((longitude - %f) * (longitude - %f)))",
location.coordinate.latitude,
location.coordinate.latitude,
location.coordinate.longitude,
location.coordinate.longitude];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:distanceFormula ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSError *error;
NSArray *result = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
我想获取已经排序的对象,而不是全部获取它们然后在代码中排序。
感谢任何提示。
【问题讨论】:
标签: iphone objective-c core-data nsfetchrequest