2013-09-16 6 views
0

Мне удалось получить объекты и POST нового объекта на сервер, но POST генерирует ошибку на iPhone.RestKit: путают, как настроить POST

Вот мои настройки:

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":[...]} (что имеет смысл, так как может быть несколько объектов)
  • Когда я отправляю POST на один объект, RestKit ожидает, что ответ из фонового шрифта будет сингулярным: {"foo":...}. Тем не менее, поскольку он использует тот же responseDescriptor, что и для GET, он получает множественное число, и он потерян.

Если я заменяю keyPath:@"foos" по keyPath:@"foo" в responseDescriptor мой POST работает ... но не мой GET.

Как смириться с этими двумя?

ответ

0

Вы правы. В основном вам просто нужно создать несколько дескрипторов ответов, чтобы охватить различные случаи. Вы можете использовать одно и то же отображение в каждом, но RestKit должен знать, что искать при обработке ответа, и ваши 2 случая отличаются.

+0

спасибо Wain. Как вы это делаете? Я думал, что это будет что-то вроде этого, и я попытался создать еще один дескриптор ответа, но я не нашел, как сказать postObject использовать этот дополнительный дескриптор вместо исходного (так как сам путь является/foos в обоих случаях). Кажется, что это не так, не так ли? – PJC

+0

Я нашел решение, которое должно использовать точный statusCode (201 для Created vs 200 для нормального GET) для каждого дескриптора response. Чувствует себя странно, хотя это нужно сделать. У меня такое впечатление, что мне не хватает чего-то очевидного ... – PJC

Смежные вопросы