2015-06-16 25 views
0

我有一個獨特的問題。我已經閱讀了RestKit文檔幾天了,我很確定RK可以做到這一點,我只是不知道如何設置。當我第一次登錄時,我的API返回一個如下所示的聯繫人JSON,我需要加載被引用但未嵌套的組和團隊。如果可能的話,我真的需要在CoreData上下文被保存之前發生這些加載。如何遞歸加載由RestKit中的外鍵標識的嵌套對象?

是否可以配置RestKit自動遞歸這些引用?如果沒有,對一個好的一般方法有什麼建議?

{ 
    "contactid": "003i0000016aiI8AAI", 
    "signed_waiver": "1", 
    "current_groupid": "T1Gj6mxcoXposmVUAA", 
    "current_teamid": "T1Gj6mxcoXposmVU11", 
    "createdby": "003i000001M4Y6fAAF", 
    "created": "Fri, 16 Jan 2015 21:14:07 +0000", 
    "updatedby": "003i0000016aiI8AAI", 
    "updated": "Sat, 13 Jun 2015 15:13:35 +0000" 
} 

如果放棄,current_groupid,或current_teamid沒有設定我需要在登機嚮導顯示,如果他們那麼我直接進入到應用程序,然後要求有關組和團隊裝載資料(姓名,幾何,會員等)。我無法將服務器API更改爲直接嵌套此結構。

我已經能夠讓我的CoreData實體Contact進行映射和保存。我與current_groupid關係大打出手,終於在發現1787並遵循其建議後終於沒有崩潰。然而,它仍然得到保存爲零,所以我還是做錯了什麼......

let mapping = RKEntityMapping(forEntityForName: "Contact", inManagedObjectStore: rkManagedObjectStore) 
    mapping.identificationAttributes = ["apiID"] 
    mapping.addAttributeMappingsFromDictionary([ 
     "contactid":  "apiID", 
     "signed_waiver": "signedWaiver", 
     "current_groupid": "rkCurrentGroupId", 
     ]) 
    mapping.addConnectionForRelationship("currentGroup", connectedBy: ["rkCurrentGroupId": "apiID"]) 

爲了清楚起見,我跟實體具有字符串上述所有和連接到集團currentGroup關係的屬性。 currentCanvassers。

回答

1

不,它不能這樣做。 RestKit不會自動觸發任何下載,這取決於您的代碼。 RestKit會接受您的請求並對其進行編碼,然後處理響應以對其進行解碼,並根據需要執行映射。

您可以在處理完成的代碼中觸發自動下載,或者更復雜地在其他一些回調中觸發自動下載,但無法保存等待它們完成。