次のような JSON 応答があるとします。
"is_following": false,
これをobjective-CでBOOLに変換するにはどうすればよいですか?
これは正しくないようです:
[[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
次のような JSON 応答があるとします。
"is_following": false,
これをobjective-CでBOOLに変換するにはどうすればよいですか?
これは正しくないようです:
[[NSNumber numberWithInt:(int)[profileData valueForKey:@"is_following"]] boolValue];
使用する JSON パーサーによって異なります。たとえば、TouchJSON を使用する場合はboolValue
、解析されたオブジェクトを呼び出すだけです。[[profileData objectForKey:@"is_following"] boolValue]
-valueForKey
オブジェクト ( id
) を返し、BOOL
のエイリアスであるため、結果signed char
を呼び出すだけです。-intValue
BOOL asBool = [[profileData valueForKey:@"is_following"] intValue];
なぜ-boolValue
直接電話しないのですか?
[profileData objectForKey:@"is_following"] boolValue]
JSON フレームワークは、その JSONfalse
値をNSNumber*
. また、実際NSString*
には にも応答する-boolValue
ため、脳死状態の JSON ソースが放出された場合"false"
でも、カバーされます。ただし、JSON にnull
または任意のコンテナー タイプが含まれている場合は問題が発生するため、値が実際にどのクラスであるかを再確認することをお勧めします。
*注: の-objectForKey:
代わりに使用しました。-valueForKey:
これが JSON の場合profileData
はNSDictionary*
. -objectForKey:
からデータを抽出するために使用する正しい方法NSDictionaries
です。