2014-09-12 145 views
2

我使用Restkit張貼類型A的對象和響應應該是類型B的對象RestKit不喜歡映射不同的對象爲一POST響應

我建立適當的響應和請求映射,但RestKit抱怨說,它得到了一個類型B而不是A的對象。

由於這是我想要的行爲,有沒有辦法告訴RestKit它可以,並繼續爲我映射?

回答

5

您需要做一些額外的工作來告訴RestKit POST的源對象不應該被用作目標對象。要做到這一點,你需要nil請求操作的targetObject(這意味着明確地得到擺在首位的操作,然後進行排隊吧):

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

在RKManagedObjectRequestOperation上似乎沒有targetObjectID,這是一個問題嗎? – Weston 2014-09-12 15:02:35

+0

它在課堂內部定義(不公開)。它也應該被刪除,因爲id用於在後臺上下文中查找目標對象。 – Wain 2014-09-12 15:12:02

+1

nilling targetObject工作,謝謝。 – Weston 2014-09-12 16:12:26

0

在RKObjectManager,線668,你可以,如果註釋掉此條件:

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

FYI:請確保使用顯式路徑在你的postObject呼叫,或者restkit會抓住它找到的第一個響應描述符。

Restkit通常會使用targetObject而不是使用與爲postObject發送的路徑關聯的響應描述符。