如何测试NSCFBoolean值?

时间:2012-08-01 09:54:34

标签: objective-c

从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

谢谢!

2 个答案:

答案 0 :(得分:66)

你从[messageDic objectForKey:@“我自己”]获得的结果,这是一个NSNumber,然后你需要将结果转换为Bool。请尝试下面的内容:

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

答案 1 :(得分:31)

__ NSCFBoolean是NSNumber class cluster中使用的私有类。要从中提取适当的值,您需要在您的情况下使用NSNumber类-boolValue中的方法:

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