Ответ 1
результат, полученный вами из [messageDic objectForKey: @ "myself" ], который является NSNumber, тогда вам нужно преобразовать результат в Bool. Итак, попробуйте ниже:
if ([[messageDic objectForKey:@"myself"]boolValue] == NO)
полученные данные от 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
?
Спасибо!
результат, полученный вами из [messageDic objectForKey: @ "myself" ], который является NSNumber, тогда вам нужно преобразовать результат в Bool. Итак, попробуйте ниже:
if ([[messageDic objectForKey:@"myself"]boolValue] == NO)
__ NSCFBoolean - частный класс, который используется в кластере классов NSNumber . Чтобы извлечь нужное значение из него, вам необходимо использовать методы из класса NSNumber, -boolValue
в вашем случае:
BOOL isMyself = [[messageDic objectForKey:@"myself"] boolValue];