2012-11-08 4 views
1

위도와 경도가 NSNumbers 인 엔티티가있는 Core Data이 있습니다. NSFetchRequestPredicate을 데이터베이스 위치의 개체가 현재 위치에서 얼마나 멀리 떨어져 있는지를 기준으로 필터링합니다. 이 경우 저장된 좌표를 CLLocationDegrees로 변환 한 다음 CLLocation 객체에 넣어야합니다. 마지막으로 CLLocationdistanceFromLocation과 비교할 수 있습니다.NSPredicate를 사용하는 위치 간 거리

내가 할 수있는 한 최선이라고 말했지만 누구나 NSPredicate으로 어떻게 할 수 있습니까?

감사합니다.

답변

1

시도 블록 기반 조건 : 중요

CLLocationDistance maxDistance = 100.0; 
CLLocation *currentLocation = ...; 

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(id location, NSDictionary *bindings) { 
    return [location distanceFromLocation:currentLocation] <= maxDistance; 
}]; 
+4

은 코어 데이터와 predicateWithBlock 만 지원되는 점에 유의하는 메모리 가능성이 가장 높은 영업 이익을 사용하는 것입니다 SQLite는 기반 저장 및 원자 저장하고 _not_. –