我在我的应用程序中使用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?
答案 0 :(得分:1)
我认为你不能单独使用一组映射来做到这一点。
您最好的选择可能是为每个项目创建映射,为整个结构创建一个映射。整体映射只是将数组提取为字典的NSArray
。获得数组后,您可以自己迭代它,检查类型,然后应用RKMapperOperation
来执行映射。
要发送更新请求,我会将其视为一个完全独立的内容。我将构建一个字典数组,其中字典具有某些信息的“普通”键/值对以及rows
的“复杂”键/值对。然后,您的请求映射就是这个字典数组(包括自定义部分)和行(应该是类的响应映射的反转)。然后,RestKit应该能够以标准方式处理它(与上面的响应映射的复杂性相比)。