【问题标题】:RestKit - Nested Structure FailRestKit - 嵌套结构失败
【发布时间】:2014-08-25 15:52:45
【问题描述】:

我目前在我们的项目中使用 RestKit,但我在管理这个结构时遇到了一些问题:

{"Elements": [
    {
      "Element": {
        "id": "1",
        "property": "house",
        "_addons": [
          {
            "Links": [
              {
                "Link": {
                  "id": "2",
                  "url": "http://www.google.com"
                }
              },
              {
                "Link": {
                  "id": "3",
                  "url": "http://www.google.com"
                }
              }
            ]
          }
        ]
      }
    },
    {
      "Element": {
        "id": "2",
        "property": "garage",
        "_addons": [
          {
            "Links": [
              {
                "Link": {
                  "id": "4",
                  "url": "http://www.google.com"
                }
              },
              {
                "Link": {
                  "id": "5",
                  "url": "http://www.google.com"
                }
              }
            ]
          }
        ]
      }
    }
  ]
}

现在在对象元素中,有一个属性“链接”,它是一个NSMutableArray(我也尝试过使用 `NSMutableDictionary 但问题仍然存在)。现在, 如果我尝试做

[mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"_addons.Links.Link" toKeyPath:@"links" withMapping:[Link mapping]]];

我收到一条错误消息,提示我无法进行映射,并且集合中有一个集合。

我找到的唯一解决方案是在映射字典中包含 @"_addons.Links" : @"links"。但是,在这种情况下,我“失去”了映射到 Link 对象的机会,我必须手动进行。有人有什么建议吗?

【问题讨论】:

    标签: ios json mapping restkit-0.20


    【解决方案1】:

    您没有确切地说出您想要什么,但 JSON 确实在数组中有一个数组,因此您需要以某种方式处理它。选项:

    1. 更改 JSON
    2. 创建自定义转换器以获取数组数组并转换为对象数组
    3. 使用 2 个映射和关系,以便将 JSON 中的嵌套对象传递到您的对象图中

    通常,第一个或最后一个选项是最好的。您似乎已经完成了最后一个选项的一半,您只需要一个额外的映射和关系。

    【讨论】:

    • 感谢@Wain 的帮助。我想我会选择最后一个选项,因为我无法更改 JSON。你能帮我看看吗?我不明白应该在哪里添加额外的映射和关系。这是我第一次使用RestKit,我很困惑。
    • 所以你需要一个元素、一个插件和一个链接类。每个都有一个映射。并且映射与关系相关联。
    • 感谢@Wain,现在可以使用了。我必须为某些属性设置一个自定义设置器(它们是一个包含另一个映射对象数组的数组),但现在它可以按预期工作。再次感谢您的帮助!
    猜你喜欢
    • 2015-11-07
    • 2012-03-16
    • 2019-08-03
    • 2022-08-02
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多