-1

nslog で number の値を確認すると、「0」と表示されます

    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
    NSNumber *number=[data objectForKey:@"serial"];
    NSLog(@"%@",number);
    if(number ==0 )
    {
         imgButton.hidden=YES;
    }

しかし、条件は常に失敗します。このようなコードも変更しました

     NSString *number=[data objectForKey:@"serial"]
     NSLog(@"%@",number);
     if(number == @"0" )
     {
           imgButton.hidden=YES;
     }

しかし、ここでも条件が失敗します。これの問題は何ですか?

4

3 に答える 3

1

NSNumber はオブジェクトで、0 は整数 (プリミティブ型) です。それらは決して等しくなりません。しかし、このように比較を変更することができ[number intValue] == 0、これは NSNumber の値が の場合に機能します0

于 2013-05-21T11:42:46.497 に答える
0

文字列比較では、メソッドを使用する必要があります

isEqualToString:NSString *)string

比較のために。

NSNumbers の場合

isEqualToNumber:(NSNumber *)number

そうしないと、それらが同じ値を持っているかどうかを比較することはできませんが、それらが同一のメモリ空間に格納されている場合です。

于 2013-05-21T11:43:09.247 に答える