【问题标题】:RestKit: Composing Relationships with the Nil Key PathRestKit:使用 Nil 键路径组合关系
【发布时间】:2013-07-17 03:15:10
【问题描述】:

我有两门课

  • 具有属性 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
                }
                ...
            },
            ...
        ]
    },
    ...
]

这样我就可以轻松地映射事物(注意两个 JSON 示例的 *main_author* 部分)。如here 所述,我尝试使用没有键路径的映射此值:

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

但我收到一条错误消息,告诉我 keyPath id 已经存在,我可能不会为此 keyPath 添加第二个映射。我完全理解这个错误,但我不知道如何从 *main_author_id* 映射回 id。更改数据源可能是最好的解决方案,但遗憾的是这是不可能的。

非常欢迎任何建议!谢谢!

【问题讨论】:

  • 您是否查看过外键映射来设置关系?
  • @Wain 这太棒了,之前没想到!随意发布这个作为答案,我很高兴接受这个作为答案!

标签: objective-c restkit object-object-mapping


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    除了提供的答案@Wain(外键映射)外,还可以实现自定义序列化(c.f. RKSerialization)并在映射发生之前修改对象。但是,上述方法优于这种(有些丑陋的)解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2013-06-23
      相关资源
      最近更新 更多