2009-11-24 10 views
7

これは私の問題です。Objective-C - 期待どおりに動作しない整数の比較

ネットワークからJSON文字列を受け取りました。 (SBJSONライブラリを使って)デコードされると、それはキー 'userid'のいくつかの並べ替えの番号を含むべきであるNSDictionaryになります。値をint、NSINTEGER、NSNumberと比較すると正しく評価されないので、私は 'should'と言っています。私は-1でテストしていた辞書内の

NSDictionary *userDictionary = [userInfo objectAtIndex:indexPath.row]; 

if ([userDictionary objectForKey:@"userid"] == -1) { 
//Do stuff 
} 

値:ここで

は、コード内の比較です。 NSLogを使ってコンソールに出力すると-1と表示されます。それでも「if」ステートメントで-1と比較すると、真でなければならない場合はfalseに評価されます。私も[NSNumber numberWithInt:-1]と比較しようとしましたが、それでもfalseに評価されます。

私は間違っていますか?あなたの助けを前もってありがとう!

答えて

16

ポインタをオブジェクトと比較するのではなく、整数そのものを比較しています。最初にオブジェクトを整数に変換する必要があります。

if ([[userDictionary objectForKey:@"userid"] integerValue] == -1) 
{ 
    //Do stuff 
} 
関連する問題