2013-03-01 175 views
2

我一整天都在摔跤,不知道自己做錯了什麼。我有一個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

回答

1

按您的評論:

該應用程序崩潰時,我打印[字典allKeys] ...我得到以下 errror ***終止應用程序由於未捕獲的異常 「NSInvalidArgumentException」的,理由是:「 - [TFHppleElement allKeys]: 無法識別的選擇發送到instanc

這就是爲什麼你不能基於關鍵字提取值。你從字典中獲得THppleElement。您需要再次parse this TFHppleElement to NSDictionary才能獲得所需的valueForKey。

+0

非常感謝,我會研究這些! – pj409 2013-03-01 03:14:56