2013-04-07 95 views
0

我有一個REST-api,它在解析JSON之後從NSDictionary中的調用返回內容。通過索引讀取NSDictionary

它被記錄爲這樣的:

2013-04-07 23:43:25.008 MyApp[15133:c07] (
     { 
     id = 1; 
     name = "The best of NTNU"; 
     type = 1; 
    }, 
     { 
     id = 2; 
     name = "Forever alone"; 
     type = 1; 
    } 
) 

我希望有字典的NSDict,我可以使用的第一級。問題是,無論我怎麼試圖抓住這個(valueForKeyobjectForKey),應用程序崩潰。

根據內存檢查員是這個NSDict [0]和[1]的「孩子」,但我不知道如何獲得它們。

回答

3

JSON實際上是返回一個NSDictionaries的NSArray,而不是一個NSDictionary。

爲了得到第一個層面,你需要得到數組的第一個索引:

NSArray *json = [NSJSONSerialization .... 
NSDictionary *firstLevel = json[0]; // or [json objectAtIndex:0]; 
+0

啊,是的,你是對的。這是因爲我刪除了json下層的所有鍵和值,所以我剩下一個NSArray,但將其定義爲NSDict。根據NSJSONSerialization的文檔,它應該返回一個NSDict。 – OptimusCrime 2013-04-07 22:14:51

+0

這取決於JSON的結構。通常它會返回一個NSDictionary。 – 2013-04-07 23:12:11

0

這看起來像一個NSArray(因爲沒有鑰匙...),這樣你就可以訪問第一字典使用objectAtIndex:選擇器。

NSDictionary * dict0 = [array objectAtIndex:0] 
0

這其實是NSArrayNSDictionary