39

JSONから受信したデータは次のようになります。

{
    myself = 1;
    "id" = 123;
}

そしてそれをNSDictionary*messageDicに入れ、自分自身の値を受け取るために値*isMyselfも定義しました

Boolean isMyself = [messageDic objectForKey:@"myself"];

しかし、それは機能しません。

だから私は日付型を印刷します、

const char* className = class_getName([[messageDic objectForKey:@"myself"] class]);
NSLog(@"yourObject is a: %s", className);
NSLog(@"Size of BOOL %d", sizeof(isMyself));
NSLog(@"Size of BOOL %@", [messageDic objectForKey:@"myself"]);

結果は次のとおりです。

2012-08-01 17:41:48.886  yourObject is a: __NSCFBoolean
2012-08-01 17:41:48.887  Size of BOOL 1
2012-08-01 17:41:48.887  Size of BOOL 0

また、以下のifセクションも機能しません。

if ([messageDic objectForKey:@"myself"] == 0)

私は試した

NSCFBoolean *isMyself = [messageDic objectForKey:@"myself"];

上記のエラーフォームが表示されました。

私の質問は、の値をテストするために何をすべきかということ[messageDic objectForKey:@"myself"]です。そして、何__NSCFBooleanですか?

ありがとう!

4

2 に答える 2

73

NSNumberである[messageDicobjectForKey:@ "myself"]から取得した結果は、結果をBoolに変換する必要があります。だから以下を試してみてください:

if ([[messageDic objectForKey:@"myself"]boolValue] == NO)
于 2012-08-01T13:04:54.183 に答える
35

__NSCFBooleanは、NSNumberクラスクラスターで使用されるプライベートクラスです。そこから適切な値を抽出するには、NSNumberクラスのメソッドを使用する必要があり-boolValueます。

BOOL isMyself = [[messageDic objectForKey:@"myself"] boolValue];
于 2012-08-01T10:07:47.907 に答える