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。実際に格納されているタイプを見ると、それは__NSCFBoolean問題ではありません。NSNumber存在しない抽象クラスです。システムは、具体的なクラスで値を保存します。

そう

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

@0これはforNO@1for を返しますYES。次のようにして is を booleanValue として使用できます。

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