我的应用可以从服务器接收以下内容:
{
'data': [{
'class': 'B',
'id': ...,
...
},
{
'class': 'C',
'id': ...,
...
}]
}
其中B
和C
是A
的后代。
在我的应用中,我的coredata模型反映了服务器,即抽象实体A
和后代B and
C.使用上述回复,我需要将data[0]
和data[1]
分别映射到B
和C
类型的实体上。
据我所知,RESTKit只能识别如何通过URL模式和关键路径映射实体,例如:
RKResponseDescriptor *resourceDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping method:RKRequestMethodAny pathPattern:@"A/" keyPath:@"data" statusCodes:[NSIndexSet indexSetWithIndex:HttpResponseCodeSuccess]];
表示上述对象最终被映射到A
类型的实体。我错了吗?如果不是有任何解决方法吗?
答案 0 :(得分:0)
你是对的,RestKit也可以使用动态映射。但这对你没有帮助(主要是因为数据是一个数组)。
唯一的解决方法(并且它是一种解决方法,因为RestKit不是为此方案设计的)将为每个实体类型创建响应描述符,并允许它们全部在响应上运行。然后,使用KVC validation拒绝任何针对错误类类型的映射。
使用mogenerator是明智的,这样你的模型类就会得到合理的维护,因为你的验证逻辑会存在。