当我拥有的唯一关系信息是 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 中设置关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何将json响应显示回网页?

如何在现有的 Firebase json 结构下添加子节点?

使用 BigQuery 读取 JSON 结构时重复数据

JSON 和 iPhone 表格视图

我的数据模型中需要什么关系才能将它们连接到我的PowerPivot表中?

如何配置 Apache WebServer 以供我拥有的公共域(或静态 IP)访问?