如何使用 RestKit 指定关系?
Posted
技术标签:
【中文标题】如何使用 RestKit 指定关系?【英文标题】:How to specify relationships using RestKit? 【发布时间】:2013-03-02 18:14:38 【问题描述】:我正在尝试使用 RestKit 将一些 JSON 映射到我的核心数据实体。
我有一个 Case
实体,该实体具有 caseId
属性,并且与名为 binders
的 Binder
实体具有可选的一对多关系。 Binder
实体与 Case
具有反向的一对一关系,称为 case
,这不是可选的。
我可以成功映射 Case
实体,但在映射 Binder
实体时遇到问题。
我的映射设置如下:
RKEntityMapping *caseEntityMapping = [RKEntityMapping mappingForEntityForName:@"Case" inManagedObjectStore:managedObjectStore];
[caseEntityMapping addAttributeMappingsFromArray:[@"caseId"]];
RKEntityMapping *binderEntityMapping = [RKEntityMapping mappingForEntityForName:@"Binder" inManagedObjectStore:managedObjectStore];
NSString *pathPattern = @"rest/case/list";
[router.routeSet addRoute:[RKRoute routeWithName:@"getCases" pathPattern:pathPattern method:RKRequestMethodGET]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:caseEntityMapping pathPattern:pathPattern keyPath:@"data" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[_objectManager addResponseDescriptor:responseDescriptor];
pathPattern = @"rest/binder/list/:caseId";
[router.routeSet addRoute:[RKRoute routeWithRelationshipName:@"binders" objectClass:[PFCase class] pathPattern:pathPattern method:RKRequestMethodGET]];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:binderEntityMapping pathPattern:pathPattern keyPath:@"data" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[_objectManager addResponseDescriptor:responseDescriptor];
我使用[_objectManager getObjectsAtPathForRouteNamed:@"getCases" object:nil parameters:nil success:… failure:…]
获取案例,然后在成功块中,我通过执行使用[_objectManager requestWithPathForRelationship:@"binders" ofObject:mappedCase method:RKRequestMethodGET parameters:nil]
创建的请求操作来获取每个案例的活页夹。
但是没有活页夹的映射结果。我错过了什么吗?
【问题讨论】:
【参考方案1】:我必须将外键 RKConnectionDescription 添加到活页夹实体映射中,这需要我为 Binder
实体创建一个名为 caseId
的新属性。
有什么方法可以做到这一点而不必创建新属性?另外,什么时候需要 RKConnectionDescription 的关键路径是什么?
【讨论】:
以上是关于如何使用 RestKit 指定关系?的主要内容,如果未能解决你的问题,请参考以下文章
Restkit 0.24.0:如何将对象(包括对多关系)序列化为 JSON