Игнорировать ответ при выполнении postObject в RestKit для iOS

#objective-c #ios #post #wcf-data-services #restkit

#objective-c #iOS #Публикация #wcf-службы обработки данных #restkit

Вопрос:

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

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

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

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

Ponnu

Ответ №1:

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

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

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

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

Ответ №2:

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

 - (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
if ([objectLoader wasSentToResourcePath:@"/rest/api/returns/201" method:RKRequestMethodPOST] amp;amp; [[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];
}
 

Ответ №3:

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

 [RKObjectMapping mappingForClass: [NSNull class]];