2011-01-16 8 views
0

Objective-CでSBJsonParserを使用してこのJSON値を処理する方法を理解できません。
JSONは"success":true(より大きいJSONオブジェクトの内部)として返します。
これはうまくいきます。このように "po"を書くと、po [jsonObject objectForKey:@"success"]の結果は単に1になります。
私はそれをIF文でテストする方法を理解しようとしています。 私は、== 1== true== TRUE== YES== [NSNumber numberWithInt:1]のどれもがfalseを返そうとしました。SBJsonParser iPhoneのブール値

どうすればこのことをテストできますか?

答えて

7

SBJSONは、(基礎となるデータは、真のために1偽のため0です)+numberWithBool:で作成NSNumberインスタンスとしてブール値を返します。 -boolValueを送信して、同等のBOOL値を取得することができます。例えば、

BOOL success = [[jsonObject objectForKey:@"success"] boolValue]; 
if (success) 
{ 
    NSLog(@"yay!"); 
} 
else 
{ 
    NSLog(@"oops"); 
} 
+0

クイック明確化:理由 '== [のNSNumber numberWithInt:1]'は動作しません、それはオブジェクト識別のためのテストだということである - 使用して '[[のNSNumber numberWithInt:1]のisEqual:[jsonObject objectForKey :@ "success"]] 'でもうまくいきますが、私は' boolValue'がより好きです。 –

+0

@ Jesse別のオプションは 'kCFBooleanTrue'や' kCFBooleanFalse'と比較します。 '([jsonObject objectForKey:@" success "] ==(id)kCFBooleanTrue)'が、 '-boolValue'を優先します。 –