Игнорировать ответ при выполнении postObject в RestKit для iOS - PullRequest
8 голосов
/ 26 октября 2011

Я использую RestKit для подключения к нашим службам данных WCF.

У меня проблемы с добавлением объекта с помощью функции postObject RKObjectManager из-за проблем с отображением ответов.

Когда объект добавляетсяСлужбы данных WCF возвращают код состояния 201 и вновь добавленную сущность (в качестве ответа).

Можно ли проигнорировать ответ и просто использовать возвращенный код состояния, чтобы проверить, было ли добавление выполнено успешно?

Ponnu

Ответы [ 3 ]

1 голос
/ 05 февраля 2012

Почему вы хотите игнорировать вновь добавленную сущность, возвращаемую с сервера? Отображение этого результата полезно для синхронизации вашего локального представления с представлением сервера. Сервер, возможно, перезаписал какое-то поле вашего объекта, например идентификатор объекта, и вы хотите отслеживать его.

Если у вас есть ошибка отображения, возможно, потому, что ответ на действие POST возвращает представление вашего объекта, которое отличается от того, которое было возвращено с GET. Вы пробовали использовать:

- (RKObjectLoader*)postObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate

вместо этого и укажите более подходящее отображение для возвращаемых данных?

0 голосов
/ 03 октября 2014

Создайте тривиальное RKObjectMapping, которое не заботится ни о каких параметрах в ответе.

[RKObjectMapping mappingForClass: [NSNull class]];
0 голосов
/ 17 марта 2012

Проблема здесь может заключаться в изменении службы REST, поэтому вместо этого простым решением будет игнорировать обратный вызов didFailWithError в случае вызовов postObject для определенного пути к ресурсу.

- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
if ([objectLoader wasSentToResourcePath:@"/rest/api/returns/201" method:RKRequestMethodPOST] && [[objectLoader response] statusCode]==201) {
    NSLog(@"Object created");
} else {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Communication error"
                                                        message:[NSString stringWithFormat:@"Received status code %d: %@",                                                                                               objectLoader.response.statusCode,                                                                                               error.localizedDescription]                                                           delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
}
...