4

假设这是我要分配给 BOOL 变量的 JSON 中的值:

"retweeted": false

这是我解析 JSON 数据的方式:

NSError *error;
NSArray *timeline = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];

现在,我有一个 bool 属性定义为:

BOOL *retweeted;

在我的班级里面。当我在解析 JSON 时这样做:

tweet.retweeted = [[[timeline objectAtIndex:i] objectForKey:@"retweeted"] boolValue];

我收到此错误:

在此处输入图像描述

如何解决这个问题呢?

4

3 回答 3

16

我首选的做法是:

BOOL success = [[responseObject valueForKey:@"success"] boolValue]

干净,简洁和内联。

于 2014-08-01T14:56:59.223 回答
15
BOOL *retweeted;

这是错误的,布尔值是标量,而不是 Objective-C 对象,因此不需要将它们声明为指针。采用

BOOL retweeted;

反而。

于 2012-04-07T11:49:30.063 回答
8

使用布尔值序列化后NSJSONSerialization存储为NSNumber. 如果您查看它实际存储的类型是 a __NSCFBoolean,但这并不重要。NSNumber是一个不存在的抽象类。系统使用具体类存储值。

所以

NSNumber* boolean = [serializedDictionary valueForKey:@"boolValue"];

这将返回一个@0forNO@1for YES。您可以通过执行以下操作将 is 作为 booleanValue 使用:

if(boolean.boolValue){
  // ...
}
于 2012-11-21T12:24:25.267 回答