从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:@"我自己"得到的结果是一个NSNumber,然后你需要将结果转换为Bool.因此,请try 以下方法:

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

Objective-c相关问答推荐

从 float 或 double 实例化 NSDecimalNumber 的正确方法

在 Objective-C 中实现纯虚方法

自动属性合成 (@property) 和继承

滚动 NSScrollView 时的回调?

何时使用静态字符串与 #define

iOS 7 - viewDidLoad 和 viewDidAppear 之间的区别

CoreData 关系故障?

在Objective-C中替换字符串中的多个字符?

如何删除应用程序可访问的所有 keys 串项目?

在 NSArray 中查找最大数值

带有 NSBlockOperation 和队列的 NSURLSession

嵌入自定义容器视图控制器时,内容位于导航栏下方.

交换 NSMutableArray 中的元素

Objective-C 异常

创建 NSTextField标签的示例代码?

可以在 NSLocalizedString 中使用变量和/或参数吗?

如何在 Xcode 7 中启用_BITCODE?

UITableView 在半透明的导航栏下

更改 UITextField 占位符字体

CMTime 秒输出