San*_*eep 2 cocoa-touch core-data objective-c restkit
我看到restkit文档相当不错,并且有很多关于对象建模的例子.还有一个嵌套映射的例子,但我发现我的场景与此有点不同.RestKit文档提供了嵌套属性的示例映射,其中包含以下json格式.
RestKit文档中的示例JSON结构:
{
"blake": {
"email": "blake@restkit.org",
"favorite_animal": "Monkey"
},
"sarah": {
"email": "sarah@restkit.org",
"favorite_animal": "Cat"
}
}
Run Code Online (Sandbox Code Playgroud)
假设我的json有点不同;
我的JSON结构:
{
"id" : 1,
"author" : "RestKit",
"blake": {
"email": "blake@restkit.org",
"favorite_animal": "Monkey"
},
"sarah": {
"email": "sarah@restkit.org",
"favorite_animal": "Cat"
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了两个不同的managedobject模型,它具有以下属性和许多关系.
我的结构的两个不同实体Product和creator映射上面的JSON对象.
Product Creator
identifier <------------------- >> name
author email
favouriteAnimal
Run Code Online (Sandbox Code Playgroud)
现在,我的映射看起来就像产品模型一样;
这就是我映射Product实体的方法,[mapping mapKeyPath:"id"toAttribute:"identifier"]; [mapping mapKeyPath:"author"toAttribute:"author"];
但请注意,映射嵌套字典属性对我不起作用.// [mapping 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'
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
遵循此结构,您将能够使用RestKit的嵌套映射功能,并且该关系将正确反映在对象加载器委托接收的反序列化对象中.RestKit依赖于命名和结构标准来简化实现任务所需的代码.您的示例与键值编码标准不同,因此RK不提供与数据格式交互的简便方法.
如果您没有访问权限或无法更改它,我认为您需要使用映射映射已知的键值对,并使用自定义求值程序执行剩余的赋值.您需要假设未知密钥实际上是关联创建者的名称值,并且它们的关联值包含每个的属性哈希值.然后使用它,然后手动重建每个对象.
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |