我有一种情况,我正在发布一个对象(不是托管对象,只是一个 NSObject 派生对象),但是来自 REST API 的响应不是所发布对象类型的 JSON 表示。这完全是另一回事。有可能处理这个吗?
假设我发布了一个对象(JSON):
{
"prop1" : 123,
"prop2" : 5
}
并且响应如果不是具有属性的对象prop1
和prop2
,正如RestKit默认期望的那样,但还有其他东西:
{
"data" : [1,2,3,4,5,6],
"message" : "hello world"
}
我已经看到 operation.targetObject 设置为 nil 的示例,但是(我相信)这仅在 Core Data 托管场景中。
我正在尝试这样简单的事情:
RKObjectRequestOperation *operation = [self.objectManager appropriateObjectRequestOperationWithObject:body method:RKRequestMethodPOST path:@"items" parameters:nil];
[operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
// success is called, but the result does not contain what the response JSON is
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
// failure
}];
[operation setWillMapDeserializedResponseBlock:^id(id deserializedResponseBody) {
// deserializedResponseBody is always nil
}];
[operation start];
我以为我可以查看 setWillMapDeserializedResponseBlock 中的响应内容,但它始终为零。
因为发布的对象具有prop1
和prop2
属性,以及默认情况下 RestKit 是如何工作的,所以它需要带有所述属性的 JSON。但是,由于结果与发布的对象无关,prop1
并且prop2
只是 nil (无论如何我都不关心)。
顺便说一句,我已经正确设置了请求映射,因此body
传入的操作对象正确映射了我的 NSObject 并将其以正确的 JSON 格式发送到服务器。
有没有一种方法可以让我使用 RestKit 进行这样的调用,并手动提取我在成功事件中寻找的内容?即使它是 JSON 响应的字典表示形式?