Objective c 如何快速知道对象是否从NSArray中的对象引用?

Objective c 如何快速知道对象是否从NSArray中的对象引用?,objective-c,Objective C,起初,我很困惑为什么我的程序员会这么做,而不仅仅是使用NSArray containsObject。然后我意识到。他没有看物体是否在阵列中 数组的类型为BGAddressAnnotation。每个都包含对myBiz的引用。他想知道奥达诺旅馆是否有生意 有没有一种更快的方法,比如说,keyPath,或者他的方法确实是你可以尝试下面的方法,我很确定这会更快。如果不是的话,我至少觉得它更好看 BOOL isnot=true; for(BGAddressAnnotation * old

起初,我很困惑为什么我的程序员会这么做,而不仅仅是使用NSArray containsObject。然后我意识到。他没有看物体是否在阵列中

数组的类型为BGAddressAnnotation。每个都包含对myBiz的引用。他想知道奥达诺旅馆是否有生意


有没有一种更快的方法,比如说,keyPath,或者他的方法确实是你可以尝试下面的方法,我很确定这会更快。如果不是的话,我至少觉得它更好看

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

请注意,我已经颠倒了BOOL变量的含义,因为我认为应该避免使用双负(例如,isfind=YES比isnot=NO好)。

他这样做的速度非常快。更少的语句不一定“更快”。(请记住,任何解决方案都必须遍历数组,引用该字段,并对其进行比较。我唯一要做的更改是复制new.myBiz,而不是每次迭代都重新获取它。)这是关于双重否定的很好且有用的解释。我喜欢。
NSArray *oldAnnot = ...
NSArray *oldAnnotBizs = [oldAnnot valueForKeyPath:@"@unionOfObjects.myBiz"];
BOOL isFound = [oldAnnotBizs containsObject:new.myBiz];