如果我有如下 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。