ios - RestKit 核心数据映射连接与 URL 中的外键

标签 ios objective-c core-data restkit restkit-0.20

我有一个带有两个端点的 API:

/项目

{
  project_list:[{"project_id": 1, "project_name": "Ben"},
                {"project_id": 2, "project_name": "Jerry"}]
}

/projects/1/members

{
  member_list:[{"member_id": 1, "member_name": "Ben"},
               {"member_id": 2, "member_name": "Jerry"}]
}

一个项目有多个成员,一个成员有一个项目。我正在使用 RestKit 0.20.1 将它们映射到核心数据存储。

当前代码:

// ###############################
// ## Configure Project mapping ##
// ###############################
RKEntityMapping *projectMapping = [RKEntityMapping mappingForEntityForName:@"Project" inManagedObjectStore:managedObjectStore];
projectMapping.identificationAttributes = @[ @"projectId" ];
[projectMapping addAttributeMappingsFromDictionary:@{ @"project_id": @"projectId",
                                                    @"project_name": @"projectName"}];

RKResponseDescriptor *projectDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:projectMapping pathPattern:nil keyPath:@"project_list" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[manager addResponseDescriptorsFromArray:@[ projectDescriptor ]];

// ##############################
// ## Configure Member mapping ##
// ##############################
RKEntityMapping *memberMapping = [RKEntityMapping mappingForEntityForName:@"Member" inManagedObjectStore:managedObjectStore];
memberMapping.identificationAttributes = @[ @"memberId" ];
[memberMapping addAttributeMappingsFromDictionary:@{ @"member_id": @"memberId",
                                                   @"member_name": @"memberName"}];

RKResponseDescriptor *memberDescriptior = [RKResponseDescriptor responseDescriptorWithMapping:memberMapping pathPattern:nil keyPath:@"member_list" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[manager addResponseDescriptorsFromArray:@[ memberDescriptor ]];

我最接近的是这些例子:http://restkit.org/api/latest/Classes/RKConnectionDescription.html ,但它们取决于 JSON 响应中的外键。

当项目外键在 URL 中并且在检索成员时未在 JSON 数据中返回时,我该如何连接它们?

最佳答案

您可以按照您链接的引用中的描述使用外键,您只需要获取它...

要获得它,您需要使用路径模式和元数据映射。您还想使用 RKRoute,因为它对路径模式做了很多工作。

像这样定义你的路径模式:

projects/:identity/members

然后在您的映射中,您可以定义外键来获取它:

@"@metadata.routing.parameters.identity": @"foreignKey",

参见 RKObjectManager docs 的“元数据映射”部分.

关于ios - RestKit 核心数据映射连接与 URL 中的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16734694/

相关文章:

ios - UIBezierPath 在 Swift 中绘制一条触摸后的线?

ios - 配置文件 "**"的应用 ID 为 "**",与 bundle ID "**OneSignalNotificationServiceExtension"不匹配

ios - Swift 扩展异常执行被中断,原因 : EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

iphone - UIPickerview自定义

iphone - 我的 MoviePlayer 不响应功能

objective-c - 使用 NSFetchedresultsController 对 'transient' 字段进行排序

ios - 是否可以为 CoreData 中的一对多关系使用有损耦合类? (类似于 Android Room ORM 中的 @Embedded)

objective-c - 使用 ARC 时重新分配属性

ios - Xcode 核心数据创建 NSManagedObject 子类创建一个额外的导入语句

iOS-Charts - 制作条形图并用其他颜色保留字段