2013-07-18 85 views
0

撰寫的關係,我有兩個班RestKit:與無關鍵路徑

  • 作者與屬性ID,紙(紙的關係),...
  • 紙帶有屬性的ID,mainAuthor(作者關係)作者(作者關係)...

,並希望一些JSON映射到它

"authors": [ 
    { 
     "id": 123, 
     "papers": [ 
      { 
       "id": 1, 
       "main_author_id": 123, 
       ... 
      }, 
      ... 
     ] 
    }, 
    ... 
] 

的問題是JSON不規整像

"authors": [ 
    { 
     "id": 123, 
     "papers": [ 
      { 
       "id": 1, 
       "main_author": { 
        "id": 123 
       } 
       ... 
      }, 
      ... 
     ] 
    }, 
    ... 
] 

,這樣我可以很容易地映射的東西(注* main_author *的兩個例子JSON一部分)。我嘗試使用映射此值沒有一個關鍵路徑解釋here

[authorMapping addAttributeMappingToKeyOfRepresentationFromAttribute:@"main_author_id"]; 
[authorMapping addAttributeMappingsFromDictionary:@{@"(main_author_id)": @"id"}]; 

,但我得到一個錯誤,告訴我,的keyPath ID已經存在,我可能不適合這個的keyPath添加第二個映射。我完全理解這個錯誤,但我不知道如何從* main_author_id *映射回ID。更改數據源可能是最佳解決方案,但很遺憾這是不可能的。

任何建議,非常歡迎!謝謝!

+1

你看過外鍵映射來建立關係嗎? – Wain

+0

@這就是輝煌,以前沒想過!隨意發佈這個答案,我很高興接受這個答案! – tilo

回答

1

這正是外鍵映射的用途。它允許您臨時存儲您提供的'身份'值,然後RestKit將找到適當的對象並完成關係。

0

除了提供了Answer @Wain(外鍵映射)之外,還可以實現自定義序列化(參見RKSerialization)並在映射發生之前修改對象。但是,上述方法優於此(某種方式醜陋)的解決方案。