我有来自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
我该如何解决这个问题?布尔中的类型转换也会产生警告
答案 0 :(得分:61)
由于[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 );
是什么样的?我看到您使用does return NSNumber types for objectForKey
的JSON库,所以我怀疑您可能没有有效的NSDictionary。
答案 1 :(得分:11)
另一种方法,不需要转换为NSNumber,如下所示:
if ([response objectForKey:@"success"])
{
if ([[response objectForKey:@"success"] boolValue])
NSLog(@"value is true");
}