Подтвердить что ты не робот

Как проверить значение NSCFBoolean?

полученные данные от 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?

Спасибо!

4b9b3361

Ответ 1

результат, полученный вами из [messageDic objectForKey: @ "myself" ], который является NSNumber, тогда вам нужно преобразовать результат в Bool. Итак, попробуйте ниже:

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

Ответ 2

__ NSCFBoolean - частный класс, который используется в кластере классов NSNumber . Чтобы извлечь нужное значение из него, вам необходимо использовать методы из класса NSNumber, -boolValue в вашем случае:

BOOL isMyself = [[messageDic objectForKey:@"myself"] boolValue];