1

比較している 2 つの NSArray があります。NSLog の出力では、それらは同一に見えますが、どういうわけか互いに等しくありません。NSArray を NSString に変換すると、まったく同じ結果が得られます。それらを自分自身と比較すると、等しくなります。1 と 2 が等しくない理由を特定するにはどうすればよいですか? ありがとうございました。

- (void)confused:(NSArray *)two {

    NSArray *one = [NSArray arrayWithObjects:@"16777223", @"7", nil];
    NSArray *two = [[NSBundle bundleWithPath:@"/path/to/bundle"] executableArchitectures];

    // NSArray "two" shows as 16277223, 7 in NSLog

    if ([two firstObjectCommonWithArray:(NSArray *)one])
    {
        NSLog(@"- it's equal %@ %@", one, two);
        // if array one matches array two then this will output
    }
    else {
        NSLog(@"- it's NOT equal %@ %@", one, two);
    }

    return;
}

コンソールからの出力は次のとおりです。

myApp (
    16777223,
    7
)
myApp (
    16777223,
    7
)
myApp - it's NOT equal (
    16777223,
    7
)(
    16777223,
    7
)
4

1 に答える 1

1

-[NSBundle executableArchitectures]NSNumberオブジェクトではなくオブジェクトの配列を返すNSStringため、渡す配列には文字列が含まれていません。変えたら

NSArray *one = [NSArray arrayWithObjects:@"16777223",@"7", nil];

NSArray *one = [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInteger:NSBundleExecutableArchitectureX86_64], 
                                         [NSNumber numberWithUnsignedInteger:NSBundleExecutableArchitectureI386], 
                  nil];

あなたのコードはうまくいくはずです。

于 2012-07-10T01:59:02.597 に答える