我使用Restkit張貼類型A的對象和響應應該是類型B的對象RestKit不喜歡映射不同的對象爲一POST響應
我建立適當的響應和請求映射,但RestKit抱怨說,它得到了一個類型B而不是A的對象。
由於這是我想要的行爲,有沒有辦法告訴RestKit它可以,並繼續爲我映射?
我使用Restkit張貼類型A的對象和響應應該是類型B的對象RestKit不喜歡映射不同的對象爲一POST響應
我建立適當的響應和請求映射,但RestKit抱怨說,它得到了一個類型B而不是A的對象。
由於這是我想要的行爲,有沒有辦法告訴RestKit它可以,並繼續爲我映射?
您需要做一些額外的工作來告訴RestKit POST的源對象不應該被用作目標對象。要做到這一點,你需要nil
請求操作的targetObject
(這意味着明確地得到擺在首位的操作,然後進行排隊吧):
RKManagedObjectRequestOperation *operation = [objectManager appropriateObjectRequestOperationWithObject:objectToPost method:RKRequestMethodPOST path:@"XXX" parameters:anyParams];
operation.targetObject = nil;
operation.targetObjectID = nil;
[objectManager enqueueObjectRequestOperation:operation];
在RKObjectManager,線668,你可以,如果註釋掉此條件:
if (RKDoesArrayOfResponseDescriptorsContainMappingForClass(self.responseDescriptors, [object class])) operation.targetObject = object;
FYI:請確保使用顯式路徑在你的postObject呼叫,或者restkit會抓住它找到的第一個響應描述符。
Restkit通常會使用targetObject而不是使用與爲postObject發送的路徑關聯的響應描述符。
在RKManagedObjectRequestOperation上似乎沒有targetObjectID,這是一個問題嗎? – Weston 2014-09-12 15:02:35
它在課堂內部定義(不公開)。它也應該被刪除,因爲id用於在後臺上下文中查找目標對象。 – Wain 2014-09-12 15:12:02
nilling targetObject工作,謝謝。 – Weston 2014-09-12 16:12:26