RestKit 中的嵌套对象映射
Posted
技术标签:
【中文标题】RestKit 中的嵌套对象映射【英文标题】:Nested objects mapping in RestKit 【发布时间】:2011-09-08 22:31:38 【问题描述】:我有以下结构:
获取手册:
//请求
"type": "handbook",
"hash": ""
//响应
"body":
"songs": [
"id": 1,
"length": 1231,
"name": "song 1"
,
"id": 2,
"length": 3155,
"name": "song 2"
],
"setlists": [
"id": 1,
"name": "setlist1",
"songs": [
"id": 1
,
"id": 2
]
,
"id": 2,
"name": "set list 2",
"songs": [
"id": 3
,
"id": 4
,
"id": 5
]
]
,
"state": true,
"type": "handbook"
我需要一个解决两个问题的建议: 1)如何在响应的“正文”中映射对象? 2) 我如何将 Setlist 连接到它的歌曲?
【问题讨论】:
【参考方案1】:使用 JSON 解析器(例如 SBJSON)将响应解析为 NSDictionary 和 NSArray 对象的层次结构。要将列表中列出的歌曲“连接”到歌曲本身,您必须对这些解析的对象进行一些手动操作。为此,您有几个选择:
您可以在歌曲数组中添加对歌曲对象的引用,作为每个集合列表字典中的另一个值。这可以工作,但您必须小心避免保留循环,其中字典保留对直接或间接保留对字典本身的引用的对象的引用。我认为这不一定会对您的数据造成问题,但如果结构演变并变得更加复杂,这将是一件令人讨厌的事情。
您可以定义自己的对象类,而不是直接使用 NSArray 和 NSDictionary。可能具有类似的保留周期复杂性,但比使用集合类更易于管理。
使用适当的 CoreData 建模将这些对象中的数据复制到 NSManagedObject 实例中。这是最优雅、最强大的解决方案,但可能超出您的要求
【讨论】:
以上是关于RestKit 中的嵌套对象映射的主要内容,如果未能解决你的问题,请参考以下文章