2014-09-12 5 views
2

Я использую Restkit для размещения объекта типа А и ответ должен быть объектом типа B.RestKit не нравится отображение другого объекта ответа POST

настроить соответствующий ответ и запрос но RestKit жалуется, что он получил объект типа B, а не A.

Поскольку это поведение, которое я хочу, есть способ сказать RestKit, что все в порядке, и перейти к нему и отобразить его для меня?

ответ

5

Вам нужно сделать дополнительную работу, чтобы сообщить RestKit, что исходный объект для POST не должен использоваться в качестве целевого объекта. Для этого вам нужно nil в targetObject операции запроса (что означает явно получая работу, в первую очередь, а затем enqueueing его):

RKManagedObjectRequestOperation *operation = [objectManager appropriateObjectRequestOperationWithObject:objectToPost method:RKRequestMethodPOST path:@"XXX" parameters:anyParams]; 
operation.targetObject = nil; 
operation.targetObjectID = nil; 
[objectManager enqueueObjectRequestOperation:operation]; 
+0

не похоже на объект targetObjectID на RKManagedObjectRequestOperation, это проблема? – Weston

+0

Определяется внутри класса (не публично). Он также должен быть заполнен, так как идентификатор используется для поиска целевого объекта в фоновом контексте. – Wain

+1

nilling targetObject работал, спасибо. – Weston

0

В RKObjectManager, строка 668, вы можете закомментировать этот параметр, если условно:

if (RKDoesArrayOfResponseDescriptorsContainMappingForClass(self.responseDescriptors‌​, [object class])) operation.targetObject = object; 

FYI: Убедитесь в том, чтобы использовать явный путь находится в вашем postObject вызова или restkit захватит первый дескриптор ответа он находит.

Restkit обычно (без этой строки прокомментировал) будет использовать объект targetObject вместо использования дескриптора ответа, связанного с путём, отправленным для postObject.

Смежные вопросы