RestKit Сопоставление нескольких корневых объектов ТОЛЬКО на Post/Put

Я извлекаю множество объектов по разным путям к ресурсам и соответствующим образом настраиваю сопоставления для них.

Однако, когда я публикую новый объект (например, гостевую карту), он содержит другие объекты (взаимодействия, арендаторы). Таким образом, данные ответа имеют несколько гостевых карт/клиентов/взаимодействий корневых объектов. Я выбрал этот метод вместо вложения сериализованного ответа, поскольку он более точно соответствует тому, как я обычно извлекаю и анализирую вещи (как отдельные объекты).

Как я могу справиться с этим как с одноразовым отображением? Я полагаю, что могу каким-то образом сделать это, используя один из новых методов блока, например - (void)postObject:(id​)object usingBlock:(void(^)(RKObjectLoader *))block

Могу ли я настроить анонимное сопоставление, которое просто указывает различные корневые ключи на правильные сопоставления классов?


person Bob Spryn    schedule 25.03.2012    source источник


Ответы (1)


Получается, что когда вы используете метод postObject или putObject, RestKit автоматически попытается сопоставить результат json с опубликованным исходным объектом. Согласно Блейку, это необходимо для объектов, не поддерживаемых Core Data, чтобы вам не приходилось создавать экземпляр совершенно нового объекта.

Однако в моем сценарии, когда я пытаюсь сопоставить 3 ключа json верхнего уровня с существующими сопоставлениями с объектами, поддерживаемыми основными данными, это не имело смысла.

Оказывается, вам нужно обнулить targetObject, и тогда стандартное сопоставление кодирования ключ-значение вступит во владение (при условии, что ваши корневые объекты правильно указаны в json).

Если вам все еще нужны методы делегата для запуска, вы можете установить loader.delegate

        [objectManager postObject:guestCard usingBlock:^(RKObjectLoader *loader){
            loader.targetObject = nil;
            loader.delegate = self;
        }];
person Bob Spryn    schedule 27.03.2012