Отображение вложенных объектов в RestKit - PullRequest
0 голосов
/ 09 сентября 2011

У меня следующая структура:

Получить справочник:

// запрос

{
   "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 Ответ

0 голосов
/ 09 сентября 2011

Используйте синтаксический анализатор JSON, такой как SBJSON, для анализа ответа в иерархию объектов NSDictionary и NSArray. Чтобы «связать» песни, перечисленные в сет-листе, с самими песнями, вам придется выполнить некоторые ручные манипуляции с этими проанализированными объектами. У вас есть несколько вариантов для этого:

  • Вы можете добавить ссылку на объект песни в массиве песен в качестве другого значения в каждом словаре сет-листа. Это может работать, но вы должны быть осторожны, чтобы избежать сохранения циклов, когда словарь сохраняет ссылку на объект, который прямо или косвенно сохраняет ссылку на сам словарь. Я не думаю, что это обязательно будет проблемой для ваших данных, но это неприятная вещь, если структура развивается и усложняется.

  • Вы можете определять собственные классы объектов, а не напрямую использовать NSArray и NSDictionary. Может иметь аналогичные сложности сохранения цикла, но немного более управляемым, чем делать это с классами коллекции.

  • Скопируйте данные из этих объектов в экземпляры NSManagedObject с соответствующим моделированием CoreData. Это самое элегантное и надежное решение, но оно может быть излишним для ваших требований

...