如何快速了解是否从NSArray中的对象引用了对象?

时间:2012-10-31 00:14:28

标签: objective-c

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

起初我很困惑为什么我的程序员这样做而不只是使用NSArray containsObject。然后我才意识到。他不看对象是否在数组中。

数组的类型为BGAddressAnnotation。每个都包含对myBiz的引用。他想知道商业是否包含在oldAnnot中。

有没有更快捷的方法来使用say,keyPath,或者他的方式确实是这样的

1 个答案:

答案 0 :(得分:1)

您可以尝试以下内容,我很确定它会更快。如果没有,我至少认为看起来更好!

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

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