ユーザーの位置情報を扱うアプリケーションがあります
私のコードは
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"DoctorTable" inManagedObjectContext:[myData managedObjectContext]];
[fetchRequest setEntity:entity];
passedLat = @"32.067288";
passedLng = @"33.325347";
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"( ( ((%f - lat) * (%f - lat)) + ((%f - lng) * (%f - lng)) ) < %f)"
" and kind == 0"
, passedLat.doubleValue, passedLat.doubleValue, passedLng.doubleValue, passedLng.doubleValue, [self calcDist:DoctorDistance], nil];
[fetchRequest setPredicate:predicate];
問題は、述語の最初のセクションです。
@"( ( ((%f - lat) * (%f - lat)) + ((%f - lng) * (%f - lng)) ) < %f)"
passlat または paessedlng に関係なく、常に true です。私もそれを置き換えようとしました
@"(((2-2)*(3-3)) <> 0)"
これもtrueと評価されます
[self calcDist:DoctorDistance] が 0.00005 を返すことにも注意してください。