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 中的嵌套对象映射的主要内容,如果未能解决你的问题,请参考以下文章

无法映射嵌套的 RestKit 对象

Restkit 0.20 嵌套对象数组映射问题

NSDictionary 中的嵌套对象与 RestKit

Restkit嵌套对象映射问题

RestKit 0.20 嵌套对象映射(对象树的路径不同)

RestKit 将未嵌套关系映射到拥有对象