gpt4 book ai didi

objective-c - RestKit - Hydrate 外键数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:48:10 25 4
gpt4 key购买 nike

我有以下 JSON:

{
"users": [
{"id": "1", "name": "John Doe"},
{"id": "2", "name": "Bill Nye"}
],
"groups": [
{"id": "1", "name": "Group1", "users": ["1", "2"]},
{"id": "2", "name": "Group2", "users": ["1"]}
]
}

...以及带有用户和组对象的核心数据模型。组对象与用户之间存在一对多关系 (NSSet)。

我发现以下线程似乎表明这是可能的,但没有解释如何执行这种映射:

https://github.com/RestKit/RestKit/issues/284

如何执行此映射,以便正确连接每个组的“用户”关系?

注意:我设置了映射,可以将 JSON 用户和组正确映射到它们各自的核心数据对象。但是,每个组的“用户”NSSet 是空的。

最佳答案

所以,我使用 RestKit 0.20(pre2) 解决了这个问题。

JSON 需要更改为以下内容(注意组的用户数组中的属性名称):

{
"users": [
{"id": "1", "name": "John Doe"},
{"id": "2", "name": "Bill Nye"}
],
"groups": [
{"id": "1", "name": "Group1", "users": [{"id" : "1"}, {"id" : "2"}]},
{"id": "2", "name": "Group2", "users": [{"id" : "1"}]}
]
}

然后,下面的映射:

RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@"User" inManagedObjectStore:managedObjectStore];
userMapping.identificationAttributes = @[@"id"];
[userMapping addAttributeMappingsFromArray:@[@"id", @"name"]];
RKEntityMapping *groupMapping = [RKEntityMapping mappingForEntityForName:@"Group" inManagedObjectStore:managedObjectStore];
groupMapping.identificationAttributes = @[@"id"];
[groupMapping addAttributeMappingsFromArray:@[@"id", @"name"]];
[groupMapping addRelationshipMappingWithSourceKeyPath:@"users" mapping:userMapping];

最后,以下 responseDescriptors:

RKResponseDescriptor *userResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:classMapping pathPattern:@"/api/allthejson" keyPath:@"users" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
RKResponseDescriptor *groupResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:classMapping pathPattern:@"/api/allthejson" keyPath:@"groups" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptorsArray:@[userResponseDescriptor, groupResponseDescriptor]];

然后使用 RKObjectManager 的 getObjectsAtPath:parameters:success:failure 方法获取您的对象并完成!

关于objective-c - RestKit - Hydrate 外键数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com