Restkit 0.20:处理到抽象实体的映射

Posted

技术标签:

【中文标题】Restkit 0.20:处理到抽象实体的映射【英文标题】:Restkit 0.20: Handling mapping to abstract entities 【发布时间】:2014-01-14 08:01:59 【问题描述】:

我的应用可以从服务器接收类似以下内容:


    'data': [
          'class': 'B',
          'id': ...,
          ...
     ,
     
          'class': 'C',
          'id': ...,
          ...
     ]

其中BCA 的后代。

在我的应用程序中,我的 coredata 模型反映了服务器,即抽象实体 A 和后代 B andC。使用上述响应,我需要将data[0]data[1] 分别映射到BC 类型的实体上。

据我所知,RESTKit 只能识别如何通过 URL 模式和关键路径映射实体,例如:

RKResponseDescriptor *resourceDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"A/" keyPath:@"data" statusCodes:[NSIndexSet indexSetWithIndex:HttpResponseCodeSuccess]];

这意味着上述对象最终被映射到A 类型的实体上。我错了吗?如果没有,有什么办法可以解决这个问题?

【问题讨论】:

【参考方案1】:

你说对了一半,RestKit 也可以使用动态映射。但这并不能真正帮助您(主要是因为数据是一个数组)。

唯一的解决方法(这是一种解决方法,因为 RestKit 不是为这种情况设计的)是为每个实体类型创建响应描述符并允许它们全部在响应上运行。然后,使用KVC validation 拒绝任何用于错误类类型的映射。

使用mogenerator 是明智之举,这样您的模型类将得到合理维护,因为您的验证逻辑将存在于此。

【讨论】:

以上是关于Restkit 0.20:处理到抽象实体的映射的主要内容,如果未能解决你的问题,请参考以下文章

使用 RestKit 0.20 映射时在 JSON 中向上遍历

RestKit 0.20:映射复杂的动态嵌套 JSON

使用 RESTKIT 0.20 映射未命名值的 JSON 数组

Restkit 0.20 JSON 映射以及额外的离线数据

Restkit 0.20 JSON 映射以及额外的离线数据

使用 RestKit 0.20 对集合进行自定义请求映射