2012-04-24 63 views
0

我有以下JSON结构i。从一个RestService得到:RestKit:单个对象映射到现有的阵列

{ 
    "customer": { 
     "id": "123456", 
     [more attributes ....] 
     "items": [ 
      { 
       "id": "1234", 
      }, 
      { 
       "id": "2345", 
      } 
      [more items...] 
     ] 
    } 
} 

我使用RestKit成功映射到核心数据。从另一个RestService(我不能改变),然后我得到更多的细节项目数组中的一个单一的项目。 JSON的答案看起来像

{ 
    "customer": { 
     "id: "123456", 
     "item": { 
      "id": "1234", 
      "name": "foo", 
      [other attributes...] 
     } 
    } 
} 

现在的问题是:我如何能在第二个答案映射,从而使单个项目添加到项目阵列(或更新的,如果它已经在那里)?

感谢您的任何想法!

回答

0

如果您已经知道如何将JSON映射到核心数据,那么剩下的只是获取想要添加项目属性的对象(使用id或其他),然后设置它,重写旧的或者添加新字段。这只是一般方法

+0

感谢您的回答。问题是第二个答案也被认为是一个客户(由于封闭的客户标签)。因此它将答案映射到客户。由于客户没有“item”标签的映射(只有“items”),它会跳过该标签。我想告诉映射器,如果出现“item”标签,它应该将它解析到“items”数组中。当然,我可以手动获取它,但如果可能的话,我正在寻找更具可扩展性的解决方案... – Retolinho 2012-04-24 09:59:59

0

如果您设置了RKManagedObjectMapping对象的相应primaryKeyAttribute,您应该能够按照您的需要执行映射。 它实际上是更容易帮助你,如果你想发布您的某些映射代码,但是这是我的意思它是

  1. 为您的客户对象创建映射,定义所有可能的属性和声明mappingObject.primaryKeyAttribute = @"id"
  2. 执行与第一请求映射(或者你把它的第一个答案)
  3. 第一映射步骤完成之后执行第二请求

这应该最初创建客户对象哟你想要然后更新它们。