0

我在我的应用程序中使用 RestKit,它需要使用现有的同步服务,以这种方式构造传入数据:

{
  "timestamp": 000000000001,
  "status" : 0,
  "syncData":[
    {
      "errors":[],
      "rows":[ {"name":"AAA", ...},
               {"name":"BBB", ...}, 
               ...],
      "rtype":"FOO" },
    {
      "errors":[],
      "rows":[ {"id":1, "description":"ZZZ", ....},
               {"id":2, "description":"YYY", ....}, 
               ...],
      "rtype":"BAR"
    }, ...

我是 RestKit 的新手,并试图找出解决此问题的最佳方法,以及将相同结构的数据发送回服务器的补充问题。我将 Core Data 与 RestKit 一起使用。

我已经映射了一个 SyncResponse 实体来保存顶级数据,我想从中得到的是 FOO 对象的集合,“AAA”,“BBB”等,以及 BAR 对象的集合,“ZZZ "、"YYY" 等,以及其他几十个对象集合,其类由 "rtype" 字段指示。

我已经阅读了关于动态映射的文档部分以及一些示例代码和帖子,但是我看不到在这种情况下动态映射是如何工作的,因为它不是{"a":{is A}, "b":{is B}}格式。这是否可以使用动态映射,如果可以,我在这里缺少什么概念?

假设有可能,我该如何从 FOO 和 BAR 的集合开始发回数据,当然用 SyncUpdateRequest 包装器之类的东西替换 SyncResponse?

4

1 回答 1

1

我认为您无法单独使用一组映射来做到这一点。

您最好的选择可能是为每个项目创建映射,并为整体结构创建一个映射。整体映射只是将数组提取为一个NSArray字典。拥有数组后,您可以自己对其进行迭代,检查类型,然后应用 anRKMapperOperation来执行映射。


对于发送您的更新请求,我会将其视为一个完全独立的事情。我会构建一个字典数组,其中字典有一些信息的“普通”键/值对和rows. 然后,您的请求映射是根据这个字典数组(涵盖自定义部分)和行(应该是类的响应映射的倒数)。然后 RestKit 应该能够以标准方式处理它(与上面的响应映射的复杂性相比)。

于 2013-10-04T22:35:58.657 回答