次のようなWebサーバーからのJSON応答があります。
{"success":true, "token":"123456"}
そして、それをifステートメントで使用して、 "YES"と比較したいと思います。
ただし、これは機能しません。
NSDictionary *response = [response JSONValue]; // the JSON value from webservice response, converted to NSDictionary
if ([response objectForKey:@"success"]){} // does not work
if ([response objectForKey:@"success"] == YES){} // does not work
if ([[response objectForKey:@"success"] integerValue] == YES) {} // does not work...erroneous probably
どうすればこれを回避できますか?ブールで型キャストすると警告も出ます
_[response objectForKey:@"success"]
_が機能しないため、_[response valueForKey: @"success"]
_を実行するとどうなりますか?
私はそれがNSNumberを返すと思います、そしてあなたは次のようなことをすることができます:
_NSNumber * isSuccessNumber = (NSNumber *)[response objectForKey: @"success"];
if([isSuccessNumber boolValue] == YES)
{
// this is the YES case
} else {
// we end up here in the NO case **OR** if isSuccessNumber is nil
}
_
また、NSLog( @"response dictionary is %@", response );
はコンソールでどのように見えますか?使用しているJSONライブラリが表示されます objectForKey
のNSNumberタイプを返します なので、有効なNSDictionaryがない可能性があります。
NSNumberへの変換を必要としない、これに対する代替アプローチは、以下のようなものです。
if ([response objectForKey:@"success"])
{
if ([[response objectForKey:@"success"] boolValue])
NSLog(@"value is true");
}