2014-01-14 75 views
0

我的應用程序能夠接收像從服務器執行以下操作:Restkit 0.20:處理映射到抽象實體

{ 
    'data': [{ 
      'class': 'B', 
      'id': ..., 
      ... 
    }, 
    { 
      'class': 'C', 
      'id': ..., 
      ... 
    }] 
} 

其中BCA後代。

在我的應用程序,我的coredata模型反映使用上述響應然後我需要分別映射data[0]和到B類型和C的實體服務器即抽象實體A和後代B and C.。

據我可以迄今所知,RESTKit僅能夠辨別如何將一個實體通過URL圖案和關鍵路徑例如映射:

RKResponseDescriptor *resourceDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"A/" keyPath:@"data" statusCodes:[NSIndexSet indexSetWithIndex:HttpResponseCodeSuccess]]; 

這意味着上述目的最終被映射到A類型的實體。我錯了嗎?如果不是有什麼辦法呢?

回答

0

你是對的,RestKit也可以使用動態映射。但這並不能真正幫助你(主要是因爲數據是一個數組)。

唯一的解決方法(它是一種解決方法,因爲RestKit不是針對此場景設計的)將爲每個實體類型創建響應描述符,並允許它們全部在響應上運行。然後,使用KVC validation來拒絕任何針對錯誤類類型的映射。

使用mogenerator會很明智,因此您的模型類將被合理維護,因爲您的驗證邏輯將居住在那裏。

+0

謝謝Wain,你是一個REST Kit支持團隊;) – Michael