JSOG API 对象的 RestKit 映射
RestKit mapping for JSOG API object
我正在尝试弄清楚如何使用 RestKit. The API
uses JSOG 标准实现 API
响应到 CoreData 对象的映射。这是一个例子:
[
{
"@id": "1",
"name": "Sally",
"friend": {
"@id": "2",
"name": "Bob",
"friend": {
"@id": "3",
"name": "Fred",
"friend": { "@ref": "1" }
}
}
},
{ "@ref": "2" },
{ "@ref": "3" }
]
如何为这样的 JSON
创建一个 RKEntityMapping
?简单属性的映射是微不足道的,问题是如何在此处设置关系以便它们与 @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
)映射到实际的 Core Data 对象?
- 如何将 JSON 的顶部元素(作为
User
对象的列表)映射到 User
实体的实际列表?
使用映射本身添加关系,以便递归钻取。为引用使用外键映射。
根据您的评论再次查看它实际上可能是动态映射而不是外键的良好候选者。这将意味着创建一个仅使用 @"@ref" : @"identifier"
作为连接的新映射和一个查看键并决定使用此连接映射还是完整的 userMapping
.
的动态映射
请注意,这两个映射都需要指定 identifier
是对象的唯一键,您应该使用内存缓存来允许找到现有对象而不是创建重复项。
我正在尝试弄清楚如何使用 RestKit. The API
uses JSOG 标准实现 API
响应到 CoreData 对象的映射。这是一个例子:
[
{
"@id": "1",
"name": "Sally",
"friend": {
"@id": "2",
"name": "Bob",
"friend": {
"@id": "3",
"name": "Fred",
"friend": { "@ref": "1" }
}
}
},
{ "@ref": "2" },
{ "@ref": "3" }
]
如何为这样的 JSON
创建一个 RKEntityMapping
?简单属性的映射是微不足道的,问题是如何在此处设置关系以便它们与 @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
)映射到实际的 Core Data 对象? - 如何将 JSON 的顶部元素(作为
User
对象的列表)映射到User
实体的实际列表?
使用映射本身添加关系,以便递归钻取。为引用使用外键映射。
根据您的评论再次查看它实际上可能是动态映射而不是外键的良好候选者。这将意味着创建一个仅使用 @"@ref" : @"identifier"
作为连接的新映射和一个查看键并决定使用此连接映射还是完整的 userMapping
.
请注意,这两个映射都需要指定 identifier
是对象的唯一键,您应该使用内存缓存来允许找到现有对象而不是创建重复项。