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];
それらをすべてフェッチしてからコードでソートするのではなく、すでにソートされたオブジェクトをフェッチしたいと思います。
ヒントをいただければ幸いです。