【问题标题】:Restkit 0.20: Handling mapping to abstract entitiesRestkit 0.20:处理到抽象实体的映射
【发布时间】: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 类型的实体上。我错了吗?如果没有,有什么办法可以解决这个问题?

【问题讨论】:

    标签: ios core-data restkit restkit-0.20


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      相关资源
      最近更新 更多