RestKit:与无关键路径

问题描述:

撰写的关系,我有两个班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

这正是外键映射的用途。它允许您临时存储您提供的'身份'值,然后RestKit将找到适当的对象并完成关系。

除了提供了Answer @Wain(外键映射)之外,还可以实现自定义序列化(参见RKSerialization)并在映射发生之前修改对象。但是,上述方法优于此(某种方式丑陋)的解决方案。