当我拥有的唯一关系信息是 JSON 结构时,如何在 RestKit 中设置关系?
Posted
技术标签:
【中文标题】当我拥有的唯一关系信息是 JSON 结构时,如何在 RestKit 中设置关系?【英文标题】:How can I setup a relationship in RestKit when the only relationship info I have is the JSON structure? 【发布时间】:2013-03-07 16:51:49 【问题描述】:我正在尝试基于从 Web 服务检索到的 JSON 在 Core Data 中创建节点实体的层次结构。
这是我的 JSON 结构示例
http://cl.ly/image/0r2x3E210m1U
我不知道如何设置映射关系。
有人可以帮帮我吗?我正在使用最新的 RestKit 版本。
【问题讨论】:
【参考方案1】:你不能。 在 JSON / RESTKIT 中,您不能提供递归结构 ob 对象。 如果您想深入了解,请尝试一次获取对象级别并进行新查询。
如果有人访问此属性,您的“节点”类应该有一个带有延迟加载的“节点”属性。
【讨论】:
我有点想通了。我最终制作了自己的解析器。【参考方案2】:如果失败:
RKEntityMapping *nodeMapping = [RKEntityMapping mappingForEntityForName:@"Node" inManagedObjectStore:managedObjectStore];
[locationIconMapping addAttributeMappingsFromDictionary:@
@"name": @"name",
@"type": @"type",
];
[nodeMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"nodes" toKeyPath:@"nodes" withMapping:nodeMapping]];
那么怎么样:
RKEntityMapping *nodeMapping1 = [RKEntityMapping mappingForEntityForName:@"Node" inManagedObjectStore:managedObjectStore];
[nodeMapping1 addAttributeMappingsFromDictionary:@
@"name": @"name",
@"type": @"type",
];
RKEntityMapping *nodeMapping2 = [RKEntityMapping mappingForEntityForName:@"Node" inManagedObjectStore:managedObjectStore];
[nodeMapping2 addAttributeMappingsFromDictionary:@
@"name": @"name",
@"type": @"type",
];
[nodeMapping1 addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"nodes" toKeyPath:@"nodes" withMapping:nodeMapping2]];
[nodeMapping2 addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"nodes" toKeyPath:@"nodes" withMapping:nodeMapping1]];
【讨论】:
是的,但由于某种原因,它映射到自己,这意味着节点实例 1 将节点实例 1 映射为其父和子。以上是关于当我拥有的唯一关系信息是 JSON 结构时,如何在 RestKit 中设置关系?的主要内容,如果未能解决你的问题,请参考以下文章
如何在现有的 Firebase json 结构下添加子节点?