2012-10-31 3 views
0
BOOL isnot=true; 
    for(BGAddressAnnotation * old in oldAnnot){ 
     if(new.myBiz==old.myBiz){ 
      //[self animationOutAndInBetweenNew:new andOld:old]; 
      isnot=false; 
     }else{ 
     } 
    } 

처음에는 왜 NSArray containsObject를 사용하지 않고 프로그래머가 그 일을했는지 ​​혼란스러워했습니다. 그 때 나는 깨달았다. 객체가 배열에 있는지 여부를 확인하지 않습니다.개체가 NSArray의 개체에서 참조되는지 여부를 어떻게 빨리 알 수 있습니까?

배열의 유형은 BGAddressAnnotation입니다. 각각에는 myBiz에 대한 참조가 들어 있습니다. 그는 비즈가 여관 oldAnnot에 포함되어 있는지 알고 싶어합니다.

는, 말하자면 키 패스를 사용하여 할 수있는 빠른 방법이 있나요, 또는 그의 방법은 실제로 다음과 같이 뭔가를 시도 할 수있는 방법

+0

그가하는 일은 꽤 빠릅니다. 문장이 적을수록 "더 빠릅니다"는 것은 아닙니다. (어떤 솔루션을 배열을 통해 반복 할 필드를 참조하고 그것을 비교해야 할 것입니다. 내가 바꿀 유일한 것은 new.myBiz 각 iteration 새로 가져 오는 것보다 복사본을 만드는 것입니다.) –

답변

1

입니다, 나는 그것을 빨리 될 것 꽤 확신합니다. 그렇지 않다면 적어도 나는 그것을 보는 것이 더 멋지다고 생각합니다! 난 당신이 이중 부정 사용을 방지해야한다고 생각하기 때문에, 당신의 BOOL 변수의 의미를 반전 한

NSArray *oldAnnot = ... 
NSArray *oldAnnotBizs = [oldAnnot valueForKeyPath:@"@unionOfObjects.myBiz"]; 
BOOL isFound = [oldAnnotBizs containsObject:new.myBiz]; 

주 (예를 들어 isFound = YES는 NO = isnot보다 더 좋네요 없음).

+0

그 더블 네가티브에 대한 유용하고 유용한 설명입니다. 나는 그것을 좋아한다. – holex

관련 문제