繁体   English   中英

RestKit对象映射:如何从键值映射到新对象/关系?

[英]RestKit Object Mapping: How to map from key values to new object / relation?

不确定标题是否最好地描述了问题,如果您有更好的描述,请编辑标题。

因此,我正在实施一个处理产品订单的应用程序。 在每个订单中,都有“行项目”,即每个产品的订单信息。 我们从REST API调用获得的“订单项”的JSON数据如下所示:

JSON数据:

"line_item":{
   "id":1234, // Product ID
   "name":"Cliff Bar",
   "sold_price":12.00,
   "sold_quantity":25
}

CoreData对象(JSON格式):

"line_item"{
   "product":{
     "id":1234,
     "name":"Cliff Bar",
     "description":"Awesome food",
     "inventory_level":12,
     "standard_price":11.00
   },
    "sold_price":12.00,
    "sold_quantity":25
}

如您所见,“ id”和“ name”更像是所售产品的“标识符”,如果愿意,则更像是“主键”。 (CoreData没有主键的概念,RestKit却有。)当我从其余API获取JSON信息时,出于性能方面的考虑,它实际上“折叠”了line_item对象内部的产品对象。

问题1:我应该如何处理?

如果产品不存在,是否使用键值不是“ id”和“ name” null的新产品创建对象? 然后,如果需要,我将获取完整的产品对象。 这是一个好方法吗?

如果我不创建这些不完整的对象,而仅将CoreData对象定义为与JSON对象相同。 恐怕CoreData中的对象之间没有牢固的关系。

如果有,请提出一个更好的解决方案!

问题2:

如果对问题1的回答是“是”,如何将2个键值(“名称”和“ id”)映射到一个新创建的对象(“ line_item”内部的“产品”的“ id”和“名称”)的字段? 我在任何教程中都没有找到关于此的任何信息。

很高兴听到您将如何解决这个问题。 谢谢!

我不太了解您的问题。 但是使用您的json,如果我是您,则可以这样创建我的核心数据:

  1. LINE_ITEM:
    • 属性:
      • sold_price
      • sold_quantity
    • 关系:
      • 产品
  2. 产品
    • 属性:
      • ID
      • 名称
      • 描述
      • INVENTORY_LEVEL
      • standard_price
    • 关系:
      • 项目

然后,我依赖于此创建RestKit映射。

RKManagedObjectStore *mos = [RKObjectManager sharedManager].managedObjectStore;
RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Line_item" inManagedObjectStore:mos];
mapping.identificationAttributes = @[@"id"];
[mapping addAttributeMappingsFromArray:@[@"sold_quantity", @"sold_price"]];

[mapping addRelationshipMappingWithSourceKeyPath:@"product" mapping:[Product manageObjectMappingDefinition]];

哦,我意识到我的代码和结构与您的json不兼容。

问题是,如何识别line_item? 没有它,我将无法设置identificationAttributes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM