2011-09-08 285 views
0

我有以下結構:嵌套對象映射RestKit

獲取手冊:

//請求

{ 
    "type": "handbook", 
    "hash": "" 
} 

//響應

{ 
    "body": { 
     "songs": [ 
      { 
       "id": 1, 
       "length": 1231, 
       "name": "song 1" 
      }, 
      { 
       "id": 2, 
       "length": 3155, 
       "name": "song 2" 
      } 
     ], 
     "setlists": [ 
      { 
       "id": 1, 
       "name": "setlist1", 
       "songs": [ 
        { 
         "id": 1 
        }, 
        { 
         "id": 2 
        } 
       ] 
      }, 
      { 
       "id": 2, 
       "name": "set list 2", 
       "songs": [ 
        { 
         "id": 3 
        }, 
        { 
         "id": 4 
        }, 
        { 
         "id": 5 
        } 
       ] 
      } 
     ] 
    }, 
    "state": true, 
    "type": "handbook" 

} 

我需要解決的建議兩個問題: 1)如何在響應的「主體」中映射對象? 2)我如何將Setlist連接到它的歌曲?

回答

0

使用JSON解析器(如SBJSON)將響應解析爲NSDictionary和NSArray對象的層次結構。要將列表中列出的歌曲「連接」到歌曲本身,您必須對這些分析的對象進行一些手動操作。你有幾個選項是:

  • 你可以參考的歌曲對象的歌曲陣列內,每一組列表字典中的另一個附加價值。這可以起作用,但是您必須小心避免保留週期,即字典保留對直接或間接保留對字典本身的引用的對象的引用。我認爲這不一定是您數據的問題,但如果結構發展並變得更加複雜,則處理這件事是一件討厭的事情。

  • 你可以定義你自己的對象類,而不是直接使用NSArray和NSDictionary。可能有類似的保留週期的複雜性,但比使用集合類更容易管理。

  • 使用適當的CoreData建模將這些對象的數據複製到NSManagedObject實例中。這是最優雅和強大的解決方案,但可能會過度滿足您的要求