使用 RestKit 和 CoreData 获取对象并将其与先前保存的对象相关联
Posted
技术标签:
【中文标题】使用 RestKit 和 CoreData 获取对象并将其与先前保存的对象相关联【英文标题】:GET object and relating it to a previously saved object using RestKit and CoreData 【发布时间】:2014-06-17 14:30:08 【问题描述】:我需要使用从网络服务器下载的外国 id 来关联实体。我有一个事件 - 类别(一个事件有类别,一个类别有很多事件)。获取所有类别的 Web 服务,以及获取所有事件的第二个 Web 服务。
这是网络服务返回的 json:
分类:
[
"id" : "1",
"name" : "music",
,
"id" : "2",
"name" : "sports",
,
"id" : "3",
"name" : "meetup"
]
事件:
[
"category_id" : "1",
"description" : "free concert",
"id" : "7791"
,
"category_id" : "2",
"description" : "Running event",
"id" : "8357"
]
我将 category_id 保存在我的事件实体上(两个实体的 RestKit 映射工作正常)。
现在,为了显示事件的类别,我需要获取 category_id 并对核心数据执行获取请求,而不是使用 getter (event.category.categoryID)。
有没有办法在对事件进行 GET 后配置 RestKit(和/或 CoreData)以关联这两个实体?我正在使用 RestKit 0.20.3。
【问题讨论】:
【参考方案1】:我的错,我没有仔细阅读文档。以下是如何做到这一点(基于this *** 的回答):
NSEntityDescription *eventEntity = [NSEntityDescription entityForName:NSStringFromClass([Event class]) inManagedObjectContext:store.mainQueueManagedObjectContext];
NSRelationshipDescription *categoryRelationship = [eventEntity relationshipsByName][@"category"];
RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:categoryRelationship attributes:@ @"categoryID": @"categoryID" ];
//entity mapping is the event's mapping like: RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName...
[entityMapping addConnection:connection];
必须在 Core Data 中正确配置关系“类别”。
对我来说,成功了。
【讨论】:
以上是关于使用 RestKit 和 CoreData 获取对象并将其与先前保存的对象相关联的主要内容,如果未能解决你的问题,请参考以下文章
在 RestKit 中使用 RKObjectManager 从 CoreData 获取
CoreData & RestKit - 从多个来源获取相同的实体类型