我试图弄清楚如何使用API
将CoreData响应映射到RestKit对象。API
使用JSOG标准。下面是一个示例:
[
{
"@id": "1",
"name": "Sally",
"friend": {
"@id": "2",
"name": "Bob",
"friend": {
"@id": "3",
"name": "Fred",
"friend": { "@ref": "1" }
}
}
},
{ "@ref": "2" },
{ "@ref": "3" }
]
我如何为这样一个RKEntityMapping
创建一个JSON
?简单属性的映射很简单,问题是如何在这里设置关系,以便它们与@ref
一起工作,同时,当顶级用户对象仅包含@ref
时。
RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:@"Question"
inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore];
[userMapping addAttributeMappingsFromDictionary:@
{
@"@id" : @"identifier",
@"name" : @"name"
}];
[userMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"friend"
toKeyPath:@"friend"
withMapping:userMapping]];
我的猜测是,我可以使用下面的代码来处理对象内部的@ref
:
[userMapping addConnectionForRelationship:@"friend" connectedBy:@{@"@ref": @"@id"}];
但这是对的吗?
@ref
)到实际的核心数据对象?User
对象的列表)映射到User
实体的实际列表中?发布于 2016-01-20 15:26:42
使用映射本身添加关系,因此它递归地进行演练。参考文献使用外键映射。
再看一遍,在您的评论之后,它实际上可能是一个动态映射的好候选者,而不是外键。这意味着创建一个只对连接使用@"@ref" : @"identifier"
的新映射,并创建一个动态映射,该映射查看键并决定是否使用此连接映射或完整的userMapping
。
请注意,这两个映射都需要指定identifier
是对象的唯一键,您应该使用内存缓存来查找现有的对象,而不是创建重复的对象。
https://stackoverflow.com/questions/34912268
复制