RestKit:对如何设置POST感到困惑

时间:2013-09-16 19:40:42

标签: objective-c restkit

我已经设法使用GET对象并将新对象POST到服务器,但POST会在iPhone上生成错误。

这是我的设置:

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:entityMappingFoo pathPattern:@"/foos" keyPath:@"foos" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; // Works well for GET

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:[entityMappingFoo inverseMapping]  objectClass:[Foo class] rootKeyPath:@"foo"]; // Client --> Server works

问题是(我认为):

  • 当我获取时,后端期望JSON有一个复数键:{"foos":[...]}(这是有意义的,因为可能有几个对象)
  • 当我发布一个对象时,RestKit希望后端的答案是单数的:{"foo":...}。然而,由于它使用与GET相同的responseDescriptor,它会得到一个复数而且它会丢失。

如果我在keyPath:@"foos"keyPath:@"foo"替换responseDescriptor我的POST工作...但不是我的GET。

我如何调和这两者?

1 个答案:

答案 0 :(得分:0)

你是对的。基本上你只需要创建多个响应描述符来覆盖不同的情况。您可以在每个映射中使用相同的映射,但RestKit需要知道处理响应时要查找的内容,并且您的2个案例不同。