为什么objectForKey:@“”返回(null)?

为什么objectForKey:@“”返回(null)?

问题描述:

我一整天都在摔跤,不知道自己做错了什么。我有一个NSDictionary为什么objectForKey:@“”返回(null)?

NSDictionary*dict=[tutorialsNodes objectAtIndex:0]; 

当我NSLog(@"%@",dict);它返回以下...

{ 
nodeAttributeArray =  (
      { 
     attributeName = class; 
     nodeContent = style1; 
    } 
); 
nodeChildArray =  (
      { 
     nodeContent = "Number of Patrons Using Facility: 151"; 
     nodeName = text; 
    }, 
      { 
     nodeName = br; 
    }, 
      { 
     nodeContent = " 
\n  Room Occupancy: 210 "; 
     nodeName = text; 
    }, 
      { 
     nodeName = br; 
    }, 
      { 
     nodeContent = " 
\n  Current Wait: 0 minutes "; 
     nodeName = text; 
    } 
); 
nodeName = p; 
} 

然而,当我输入以下代码...

NSArray*dictArray=[dict objectForKey:@"nodeChildArray"]; 
NSLog(@"%@",dictArray); 

它返回null。我正在尝试从NodeChildArray密钥中提取nodeContent,但我甚至无法取得密钥。不知道为什么它一直返回null

修订

下面是我执行的确切行...

//some HTML parsing before this 
NSArray *tutorialsNodes = [tutorialsParser 
searchWithXPathQuery:tutorialsXpathQueryString]; 

NSDictionary*dict=[tutorialsNodes objectAtIndex:0]; 

NSArray*dictArray=[dict objectForKey:@"nodeChildArray"]; 

NSLog(@"%@",dictArray); 

它返回null两次

+2

此输出看起来不像是从字典对象生成的。我怀疑它没有正确序列化,实际上只是一个字符串。尝试用'NSLog(@“%@”,[dictArray allKeys]);'来验证它是否已正确序列化,然后询问字典中的所有关键字。 – JoePasq 2013-03-01 02:17:02

+1

验证'dict'不是'nil'。如果不是,那么'dict'没有'@“nodeChildArray”'键。 – rmaddy 2013-03-01 02:17:08

+0

向我们展示您正在执行的行,按照执行它们的精确顺序,包括NSLog语句以及相关声明的摘要。最有可能的是,你在第一个陈述和第二个陈述之间失去了“dict”。 – 2013-03-01 02:35:04

按您的评论:

该应用程序崩溃时,我打印[字典allKeys] ...我得到以下 errror ***终止应用程序由于未捕获的异常 “NSInvalidArgumentException”的,理由是:“ - [TFHppleElement allKeys]: 无法识别的选择发送到instanc

这就是为什么你不能基于关键字提取值。你从字典中获得THppleElement。您需要再次parse this TFHppleElement to NSDictionary才能获得所需的valueForKey。

+0

非常感谢,我会研究这些! – pj409 2013-03-01 03:14:56