Restkit/Core Data 关系映射,实体到相同类型的实体(父/子)
Posted
技术标签:
【中文标题】Restkit/Core Data 关系映射,实体到相同类型的实体(父/子)【英文标题】:Restkit/Core Data relationship mappings, entity to same type of entity (parent/child) 【发布时间】:2013-07-09 19:15:13 【问题描述】:我正在关注 RestKit 0.2.0 上的 Alexander Edge tutorial,但我对如何将其应用于我的需求感到困惑。具体来说,我正在使用一个 Web 服务,它返回以下结构的对象:
"ObjectIdMember": 200,
"ObjectNameMember": "Baseball Bat",
"SubObjectIdMember": 4124
,
"ObjectIdMember": 200,
"ObjectNameMember": "Baseball Glove",
"SubObjectIdMember": 4555
,
这个想法是Object
实体可以有许多子对象。粗略地说,获取Object
的目的是使用DisplayName
来填充表格视图中的节标题,并按对象对节中的子对象进行分组。
如何使用 RestKit + Core Data 捕获(或定义)这种关系?本教程仅建议在响应中定义了子对象时您可能会做什么,但这是另一种情况。
我知道我可以使用 -(NSArray *)getSubObjects
来装饰和使用 Object
的子类,但 Core Data 不会知道我在做什么,因为这不会使用任何关系。
【问题讨论】:
您可以将对象映射为单个项目,然后使用谓词从商店中获取以仅获取适当的成员和子对象吗? 【参考方案1】:我相信你想要的是RKConnectionDescription,它可以使用外键在Core Data中建立关系。
文档中的示例给出了以下 json:
"project":
"id": 12345,
"name": "My Project",
"userID": 1
使用以下映射配置:
NSEntityDescription *projectEntity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:managedObjectContext];
NSRelationshipDescription *userRelationship = [projectEntity relationshipsByName][@"user"];
RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:userRelationship attributes:@ @"userID": @"userID" ];
【讨论】:
是的,这就是我想要的。我认为我需要阅读更多有关 Core Data 的内容,才能真正了解它在做什么。以上是关于Restkit/Core Data 关系映射,实体到相同类型的实体(父/子)的主要内容,如果未能解决你的问题,请参考以下文章
两个端点结果之间的外键映射 RESTKIT Core Data
RestKit / Core Data / Offline - 我需要 UUID 还是 RestKit 足够聪明?