gpt4 book ai didi

objective-c - RestKit 动态嵌套映射

转载 作者:行者123 更新时间:2023-12-01 09:16:58 24 4
gpt4 key购买 nike

我看到 restkit 文档非常好,并且有各种关于对象建模的示例。还有一个嵌套映射的示例,但我发现我的场景与此略有不同。 RestKit 文档提供了具有以下 json 格式的嵌套属性的示例映射。

来自 RestKit 文档的示例 JSON 结构:

{
"blake": {
"email": "blake@restkit.org",
"favorite_animal": "Monkey"
},
"sarah": {
"email": "sarah@restkit.org",
"favorite_animal": "Cat"
}
}

假设我的json和这个有点不同;

我的 JSON 结构:

{ 
"id" : 1,
"author" : "RestKit",
"blake": {
"email": "blake@restkit.org",
"favorite_animal": "Monkey"
},
"sarah": {
"email": "sarah@restkit.org",
"favorite_animal": "Cat"
}
}

我创建了两个不同的托管对象模型,具有以下属性和许多关系。

我的结构产品和创建者的两个不同实体映射上述 JSON 对象。

Product                                           Creator 

identifier <------------------- >> name
author email
favouriteAnimal

现在,我的产品模型映射看起来像这样;

这就是我映射产品实体的方式, [映射 mapKeyPath:"id"toAttribute:"identifier"]; [映射 mapKeyPath:"author"toAttribute: "author"];

但请注意,映射嵌套字典属性对我不起作用。//[映射 mapKeyOfNestedDictionaryToAttribute:@"creators"];

现在,在作者类中。

我想不出映射上述 JSON 结构的常用方法。

最佳答案

如果您可以控制 Web 服务,我强烈建议您像这样重新组织您的响应数据:

{
product:
{
id: 1,
author: 'RestKit',
creators: [
{
id: 1,
name: 'Blake',
email: '...',
favorite_animal: 'Monkey'
},
{
id: 2,
name: 'Sarah',
email: '...',
favorite_animal: 'Cat'
}
]
}
}

按照这种结构,您将能够使用 RestKit 的嵌套映射功能,并且这种关系将正确地反射(reflect)在对象加载器委托(delegate)接收的反序列化对象中。 RestKit 依靠命名和结构标准来简化实现任务所需的代码。您的示例偏离了键值编码标准,因此 RK 没有提供与您的数据格式进行交互的简单方法。

如果您无权访问或无法更改它,我认为您需要使用映射映射已知的键值对,并使用自定义求值器执行剩余的分配。您需要假设未知键实际上是关联创建者的名称值,并且它们的关联值包含每个的属性哈希。然后,您将使用它手动重建每个对象。

关于objective-c - RestKit 动态嵌套映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912731/

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