RestKit:将单个对象映射到现有数组
Posted
技术标签:
【中文标题】RestKit:将单个对象映射到现有数组【英文标题】:RestKit: Map single object into existing array 【发布时间】:2012-04-24 09:06:41 【问题描述】:我有以下从 RestService 获得的 JSON 结构:
"customer":
"id": "123456",
[more attributes ....]
"items": [
"id": "1234",
,
"id": "2345",
[more items...]
]
我使用 RestKit 成功映射到核心数据。然后,我从另一个 RestService (我无法更改)获取有关 items 数组中单个项目的更多详细信息。 JSON 答案看起来像
"customer":
"id: "123456",
"item":
"id": "1234",
"name": "foo",
[other attributes...]
现在的问题是:我如何映射第二个答案,以便将单个项目添加到 items 数组中(或者如果它已经存在则更新)?
感谢您的任何想法!
【问题讨论】:
【参考方案1】:如果您已经知道如何将 JSON 映射到 Core Data,剩下的就是获取您想要添加项目属性的对象(使用 id 或其他内容),然后设置它,重写旧的,或添加新领域。这只是一般方法
【讨论】:
感谢您的回答。问题是第二个答案也被识别为客户(由于封闭的客户标签)。因此,它将答案映射到客户。由于客户没有“项目”标签(只有“项目”)的映射,它会跳过该标签。我想告诉映射器,如果出现“item”标签,它应该将其解析为“items”数组。当然我可以手动获取它,但如果可能的话,我正在寻找一个更具可扩展性的解决方案......【参考方案2】:如果您为RKManagedObjectMapping
对象设置了适当的primaryKeyAttribute
,您应该能够按照您的意愿执行映射。
如果您发布一些映射代码,实际上会更容易帮助您,但这就是我的意思
-
为您的客户对象创建映射,定义所有可能的属性并声明
mappingObject.primaryKeyAttribute = @"id"
使用第一个请求(或您所说的第一个答案)执行映射
第一个映射步骤完成后,执行第二个请求
这应该首先创建您想要的客户对象,然后更新它们。
【讨论】:
以上是关于RestKit:将单个对象映射到现有数组的主要内容,如果未能解决你的问题,请参考以下文章