0

我有两节课

  • 作者具有属性 id、论文(论文关系)、...
  • 具有属性 id、mainAuthor(作者关系)、authors(作者关系)的论文...

并想将一些 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* 部分)。我尝试使用没有键路径的映射这个值,如下所述

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

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

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

4

2 回答 2

1

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

于 2013-07-18T10:20:39.950 回答
0

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

于 2013-07-18T10:19:32.400 回答