Objective c 如何测试NSCFoolean值?

Objective c 如何测试NSCFoolean值?,objective-c,Objective C,从JSON接收数据,如下所示: { myself = 1; "id" = 123; } 我把它放进一个NSDictionary*messageDic,我还定义了一个值*isMyself来接受我自己的值 Boolean isMyself = [messageDic objectForKey:@"myself"]; 但它不起作用 if ([messageDic objectForKey:@"myself"] == 0) 所以我打印日期类型 const char* classNa

从JSON接收数据,如下所示:

{
    myself = 1;
    "id" = 123;
}
我把它放进一个NSDictionary*messageDic,我还定义了一个值*isMyself来接受我自己的值

Boolean isMyself = [messageDic objectForKey:@"myself"];
但它不起作用

if ([messageDic objectForKey:@"myself"] == 0)
所以我打印日期类型

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:@“我自己”]
的值?什么是
\uu nscfoolean


谢谢

\uu nscfoolean是在NSNumber中使用的私有类。要从中提取适当的值,您需要使用NSNumber类中的方法,
-boolValue
,在您的示例中:

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

您从[messageDic objectForKey:@“我自己”]获得的结果是一个NSNumber,然后您需要将结果转换为Bool。因此,请尝试以下方法:

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

您的混合语言-boolValue为YES或NO,因此上面的代码应为“…=”否)正如@DavidH所说,在布尔值转换为布尔值时使用“==NO”是危险的,你会这样做吗?我不允许进行单字符编辑。