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': ...,
...
]
其中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
类型的实体上。我错了吗?如果没有,有什么办法可以解决这个问题?
【问题讨论】:
【参考方案1】:你说对了一半,RestKit 也可以使用动态映射。但这并不能真正帮助您(主要是因为数据是一个数组)。
唯一的解决方法(这是一种解决方法,因为 RestKit 不是为这种情况设计的)是为每个实体类型创建响应描述符并允许它们全部在响应上运行。然后,使用KVC validation 拒绝任何用于错误类类型的映射。
使用mogenerator 是明智之举,这样您的模型类将得到合理维护,因为您的验证逻辑将存在于此。
【讨论】:
以上是关于Restkit 0.20:处理到抽象实体的映射的主要内容,如果未能解决你的问题,请参考以下文章
使用 RestKit 0.20 映射时在 JSON 中向上遍历