0
    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に含まれているかどうかを知りたがっています。

たとえば、keyPathを使用してそれを行うためのより迅速な方法はありますか、それとも彼の方法は確かに方法です

4

1 に答える 1

1

あなたは次のように何かを試すことができます.私はそれがより速いと確信しています. そうでない場合は、少なくとも見た目が良いと思います。

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

BOOL 変数の意味を逆にしたことに注意してください。これは、二重否定の使用を避けるべきだと思うためです (たとえば、isFound=YES は isnot=NO よりも適切です)。

于 2013-08-22T22:21:12.387 に答える