2012-09-16 45 views
5

我有一个变量被称为参与从JSON提要拉。从Dictionary中检查布尔值。

attending var type is: __NSCFBoolean 

这是使用[varname的类]来获得类类型的变量进行:检查对象被解释什么类的类型,因为我的NSLog在此之后。

所以我想看看,如果这是真的还是假的....所以我写这篇文章的代码..:

if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){ 

然而,因为它给了我一个黄色的文字错误,说这个我不能编译:

enter image description here

我在做什么错?我怎样才能解决这个问题。我想补充饲料中的数据是这样的:

{ 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 504; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 503; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 0; 
    date = "2012-09-24 09:11:00"; 
    id = 508; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 509; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 0; 
    date = "2012-09-24 09:11:00"; 
    id = 505; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 
    { 
    attendees =   (
    ); 
    attending = 1; 
    date = "2012-09-24 09:11:00"; 
    id = 506; 
    lessonHTML = "somehtml."; 
    name = "Sup"; 
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; 
}, 

回答

18

布尔在词典等容器类被封装在NSNumber对象(请参阅NSNumber文件更多信息)

要提取您需要发送的消息boolValue对象的值从字典trieved和比较,YES/NO:更多

NSNumber* attendingObject = [[events objectAtIndex:indexPath.row] objectForKey:@"attending"]; 
if ([attendingObject boolValue] == YES) 
{ 
    ... 
} 

阅读价值以及它们是如何封装我的集合类in the Apple documentation here

+0

你的先生是一个传奇!我的问题得到解答,我的任务已完成。你获得100次经验。 – jimbob

+0

高兴地帮助;-) – AliSoftware

+0

很大的帮助,谢谢。我不知道这是什么在迅速1,2或3 ... – eddyce

2

一个“BOOL”类型不是目标C对象,而是一个C风格的类型。

它作为“NSNumber”对象存储在字典中。

所以,你需要做的,而不是什么:

if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){ 

是这样的:

BOOL attending = NO; // assume NO to start with 
NSDictionary * lessonDictionary = [_events objectAtIndex: indexPath.row]; 
if(lessonDictionary) 
{ 
    NSNumber * attendingObject = [lessonDictionary objectForKey: @"attending"]; 
    if(attendingObject) 
    { 
      attending = [attendingObject boolValue]; 
    } 
}