0
나는 coredata에서 결과를 가져 오는 배열이 하나 있는데, 객체가 이고 범위가 myObjId
입니다.다른 객체 유형을 가진 Array를 신속하게 처리 할 수 있습니다.
그리고 난 내 MapView
에 MKAnnotation
을 가지고, 그래서 Id
와 사용자 정의 주석과 배열이 있습니다
self.mapView.annotations
반환 객체 CustomPinAnnotation
myId
속성을.
내가하고 싶은 일은지도에서 기존 핀을 다시로드하지 않고이 두 결과를 동기화하는 것입니다. CoreData에서 결과 배열에없는 annotations
배열의 데이터를 찾는 방법은 무엇입니까?
-(BOOL)isAlreadyDisplayOnMap:(NSNumber*)pinId {
for(CustomPinAnnotation *an in self.mapView.annotations) {
if(![an isKindOfClass:[MKUserLocation class]]) {
if([an.favourId integerValue] == [pinId integerValue]) {
return YES;
}
}
}
return NO;
}
을하지만이 몹시 느리고 배열을 비교하는 더 좋은 방법이 있어야한다 :
나는 방법은 주석이 추가됩니다 바로 전에 확인을 썼다.
당신이 무엇을 알고지도보기의'annotations' 배열에 의존하지 않아도 정방향 –
참고 반복 빠른 루프입니다 특수 효과가지도 상에 있습니다. 지도의 _own_ "목록"을지도 상에 유지할 수 있지만 pinId에 의한 _immediate_ 질의를 지원하는 구조 (pinId로 키가있는 NSDictionary와 같습니다). – Anna
기존 코드에서 완전히 관련이 없지만 ** if *인지 확인하는 대신 ** 객체 **가 찾고있는 클래스 ('CustomPinAnnotation')인지 확인하기 위해'if' 조건을 변경하는 것이 좋습니다. *'MKUserLocation'. 이 방법을 사용하면 사용자 정의 속성 액세스가 실패하지 않을 것이라는 확신을 가질 수 있으며 두 가지 클래스 유형 이상이있을 가능성을 설명합니다. – Anna