2012-10-31 94 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的引用。他想知道這家商店是否包含在老客戶之中。

有沒有更快的方法使用的發言權,的keyPath做到這一點,或者是他的方式的確是你可以嘗試一些如下的方式

+0

他這樣做的方式非常快。更少的陳述不一定「更快」。 (請記住,任何解決方案都必須遍歷數組,引用該字段並對其進行比較,唯一改變的是複製new.myBiz,而不是每次迭代都重新獲取它。) –

回答

1

,我敢肯定它會更快。如果不是的話,我至少認爲看看更好!

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

請注意,我倒你的布爾變量的含義,因爲我認爲你應該避免使用雙重否定的(例如isFound = YES比IsNot運算更好= NO)。

+0

對於雙重否定是很好的和有用的解釋。我喜歡。 – holex

相關問題