2014-02-27 114 views
1

怎麼樣了人---我無法通過迭代在Xcode中的數組迭代 - 希望有人能指出我在正確的direction..here的我的反應JSON響應麻煩通過陣列

NSString *[email protected]"jsonUrlremoved"; 
    NSURL *url=[NSURL URLWithString:str]; 
    NSData *data=[NSData dataWithContentsOfURL:url]; 
    NSError *error=nil; 
    id response=[NSJSONSerialization JSONObjectWithData:data options: 
       NSJSONReadingMutableContainers error:&error]; 


{ 
   "item":{ 
      "1":{ 
         "title":"Item Title", 
         "description":"long description", 
         "date":" March 01, 2014" 
      }, 
      "2":{ 
         "title":"Item Title", 
         "description":"long description", 
         "date":" March 01, 2014" 
      }, 
      "3":{ 
         "title":"Item Title", 
         "description":"long description", 
         "date":" March 01, 2014" 
      } 
   } 
} 

我已經試過轉換爲NSDictionary中以及NSObject的和沒有運氣的NSArray(因爲我是一個小白)

NSDictionary *results = [response objectForKey:@"item"]; 
for (NSDictionary *result in results) { 

     NSString *image = [result objectForKey:@"image"]; 
     NSString *desc = [result objectForKey:@"description"]; 
     NSString *title = [result objectForKey:@"title"]; 

    } 

的應用程序要麼崩潰或返回null ---任何指導讚賞

+0

好像 '結果' 是 '的NSArray' – Akhilrajtr

+0

如果'[響應objectForKey:@ 「項目」];'返回比'其他東西NSDictio nary'或者'NSArray',你需要仔細檢查你從調用中得到的'response'對象到'JSONObjectWithData:' – Aaron

回答

1

對於開啓者,您的數據沒有關鍵字@「image」的值。

但是,除此之外,當你得到@「item」的對象時,它會返回的是一個由三個多字典組成的數組,其中鍵爲@「1」,@「2」和@「3」。做一個得到這些密鑰,然後你應該能夠獲得子域。

做一個「PO結果」在調試程序時,您斷點你的「for」循環的開始。它將打印出你得到的對象的類型(不管它是NSDictionary還是NSArray),並且改變你的代碼來同意你的數據結構中的內容。

+0

謝謝,讓我走上正確的軌道。 – Jay

1

你的JSON對象不包含數組。所以遍歷它是毫無疑問的。你基本上有嵌套的字典。如果你需要做一些數組的東西,我會考慮將你的JSON的Item對象的值改爲Array「[]」而不是Dictionary「{}」。這樣,您甚至不必處理JSON對象中的索引。你可以免費得到它們。

「校正」 JSON對象會是這個樣子:

這樣做,如果你想dont't調整你的JSON可以如下的
{ 
    "item":[ 
     { 
     "title":"Item Title", 
     "description":"long description", 
     "date":" March 01, 2014" 
     }, 
     { 
     "title":"Item Title", 
     "description":"long description", 
     "date":" March 01, 2014" 
     }, 
     { 
     "title":"Item Title", 
     "description":"long description", 
     "date":" March 01, 2014" 
     } 
    ] 
} 
0

的一種方式,它周圍只是一種不定:P

NSDictionary *results = [response objectForKey:@"item"]; 

    NSString *image = [[result objectForKey:@"1"]objectForKey:@"image"] ; 
    NSString *desc = [[result objectForKey:@"1"]objectForKey:@"description"]; 
    NSString *title = [[result objectForKey:@"1"]objectForKey:@"title"]; 

同樣地,對於對象的其餘