我看到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"
}
}我创建了两个不同的managedobject模型,具有以下属性和许多关系。
我的结构产品和创建者有两个不同的实体来映射上述JSON对象。
Product Creator
identifier <------------------- >> name
author email
favouriteAnimal现在,对于产品模型,我的映射应该是这样的;
这就是我如何映射产品实体,映射mapKeyPath:"id“toAttribute:”标识符“;映射mapKeyPath:"author”toAttribute:"author";
但是请注意,映射嵌套的字典属性对我不起作用。//映射mapKeyOfNestedDictionaryToAttribute:@"creators";
现在在作者课上。
我无法找到通常的方法来映射上述JSON结构。
发布于 2012-08-11 20:03:05
如果您控制web服务,我强烈建议您重新组织响应数据,如下所示:
{
product:
{
id: 1,
author: 'RestKit',
creators: [
{
id: 1,
name: 'Blake',
email: '...',
favorite_animal: 'Monkey'
},
{
id: 2,
name: 'Sarah',
email: '...',
favorite_animal: 'Cat'
}
]
}
}按照这种结构,您将能够使用RestKit的嵌套映射特性,并且这种关系将正确地反映在对象加载器委托接收的反序列化对象中。RestKit依靠命名和结构标准来简化完成任务所需的代码。您的示例偏离了键值编码标准,因此RK提供了一种与数据格式交互的简单方法。
如果您没有访问权限或无法更改它,我认为您需要用映射映射已知的键值对,并使用自定义评估器执行剩余的赋值。您需要假设未知的键实际上是关联创建者的名称值,它们的关联值包含每个创建器的属性哈希。使用该方法,您可以手动地重构每个对象。
https://stackoverflow.com/questions/11912731
复制相似问题