0

我有以下结构:

获取手册:

//要求

{
   "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 连接到它的歌曲?

4

1 回答 1

0

使用 JSON 解析器(例如 SBJSON)将响应解析为 NSDictionary 和 NSArray 对象的层次结构。要将列表中列出的歌曲“连接”到歌曲本身,您必须对这些解析的对象进行一些手动操作。为此,您有几个选择:

  • 您可以添加对歌曲数组中歌曲对象的引用作为每个集合列表字典中的另一个值。这可以工作,但您必须小心避免保留循环,其中字典保留对直接或间接保留对字典本身的引用的对象的引用。我认为这对您的数据来说不一定是个问题,但如果结构发展并变得更加复杂,这将是一件令人讨厌的事情。

  • 您可以定义自己的对象类,而不是直接使用 NSArray 和 NSDictionary。可能具有类似的保留周期复杂性,但比使用集合类更易于管理。

  • 使用适当的 CoreData 建模将这些对象中的数据复制到 NSManagedObject 实例中。这是最优雅和最强大的解决方案,但可能对您的要求有点过分

于 2011-09-08T23:29:42.813 回答