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

时间:2014-01-14 08:01:59

标签: ios core-data restkit restkit-0.20

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

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

其中BCA的后代。

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

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

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

表示上述对象最终被映射到A类型的实体。我错了吗?如果不是有任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

你是对的,RestKit也可以使用动态映射。但这对你没有帮助(主要是因为数据是一个数组)。

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

使用mogenerator是明智的,这样你的模型类就会得到合理的维护,因为你的验证逻辑会存在。