RKObjectManager对PUT的正确使用是什么?

时间:2013-05-04 00:46:51

标签: ios restkit put

我正在使用一个允许使用PUT请求更新对象的API - 使用以下格式(w / curl):

curl --request PUT -u <api_key>: <api_url> \
-d "attribute=newvalue"

即。然后更新curl中列出的关联对象的任何属性(在API URL中引用),并返回更新的对象。

我正在使用带有映射对象的RestKit,并且所有东西都可以使用GET。但是在更新映射对象中的属性之后,我很难让RKObjectManager中的putObject方法起作用,例如:

 [objectManager putObject:<someObject>
               path:path
               parameters:nil
               success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {}
               failure:^(RKObjectRequestOperation *operation, NSError *error) {
                [self.refreshControl endRefreshing];
               }
 ];

无论我放入第一个参数 - 更新的映射对象,JSONified字典,甚至只是一个普通的旧体字符串,似乎都会从RestKit返回“无法解析请求数据,无效的JSON”错误。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的<someObject>应该是数据模型中的类的实例。该类必须具有一组已定义的映射。

假设你有一个班级Person。您可以定义映射和响应描述符,以便RestKit可以将下载的JSON转换为Person个对象。现在,您需要获取inverseMapping来定义您的请求描述符,以便RestKit知道如何序列化上传。

这允许RestKit获取您的<someObject>,将其序列化为JSON(请求描述符),将其发送到您的服务器,然后接收响应并将该数据映射回更新的对象(响应描述符)。

检查示例here。它使用字典来保存更新的属性,但原理是相同的。使用字典可以更轻松地上传部分对象而不是完整对象。