Отображение RestKit с неуспешными кодами состояния

Я пытаюсь сопоставить запрещенный режим 403 для пользовательского объекта. Я зарегистрировал сопоставление с кодом ответа следующим образом:

RKResponseDescriptor* tacResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:termsAndConditionMapping pathPattern:@"user" keyPath:nil statusCodes:[NSIndexSet indexSetWithIndex:403]]; [objectManager addResponseDescriptor:tacResponseDescriptor]; 

Но когда ответ 403 отправляется с сервера, я просто получаю «Неудачный Non-successful status code encountered: performing mapping with nil target object журналом Non-successful status code encountered: performing mapping with nil target object » из RestKit, а блок сбоя выполняется с mappingResult свойства mappingResult операции, mappingResult nil . Что я здесь делаю неправильно? Мне нужно сопоставить один конкретный случай ошибки определенного пути к определенному объекту.

С наилучшими пожеланиями, Майкл

2 Solutions collect form web for “Отображение RestKit с неуспешными кодами состояния”

Я не совсем уверен, что вы имеете в виду, но нет свойства mappingResult, если вы попадете в блок отказов. Но ошибка может быть найдена скрытой в свойстве operation :

 [[[operation.error userInfo] objectForKey: RKObjectMapperErrorObjectsKey] firstObject]; 

Если код состояния ответа не равен 2xx, будет вызываться блок отказов, вы можете поймать свою собственную ошибку там, включив operation.HTTPRequestOperation.response.statusCode

Если вы хотите обрабатывать ошибки с помощью RestKit, более общим способом, вы можете подумать о том, чтобы добавить к вашему RKObjectManager дескриптор ответа для всех ошибок 4xx и 5xx – в этом примере я буду сопоставлять ошибку с этой структурой тела

 {"errorCode":"996","errorMessage":"This is my custom error message"} 

Настройте свой RKObjectManager:

 RKObjectMapping* errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; [errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"errorMessage" toKeyPath:@"errorMessage"]]; [errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"userInfo"]]; NSIndexSet *clientErrorStatusCode = RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError); // Any response in the 4xx NSIndexSet *serverErrorStatusCode = RKStatusCodeIndexSetForClass(RKStatusCodeClassServerError); // Any response in the 5xx RKResponseDescriptor *clientErrorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"" statusCodes:clientErrorStatusCode]; RKResponseDescriptor *serverErrorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping method:RKRequestMethodAny pathPattern:nil keyPath:@"" statusCodes:serverErrorStatusCode]; //... Remember to add response descriptors to your object manager 

А затем в блоке отказов ваших запросов вы можете включить код состояния и обработать ошибку:

 failure:^(RKObjectRequestOperation *operation, NSError *error) { RKErrorMessage *errorMessage = [[error.userInfo objectForKey:RKObjectMapperErrorObjectsKey] firstObject]; NSString *errorCode = [errorMessage.userInfo objectForKey:@"errorCode"]; if (operation.HTTPRequestOperation.response.statusCode == 304){ //Handle your 304 error } } 
  • Как автоматически обрабатывать токены с помощью RestKit
  • RestKit CoreData 0.20.3 - дополнительная проверка перед сохранением MOC после завершения отображения
  • Преобразование значения RestKit .20.x
  • Связь между RKObjectMapping и RKEntityMapping
  • RestKit Сопоставление строкового массива без ключей
  • RestKit - обрабатывать одну операцию REST за раз
  • Перемещение вверх в JSON при сопоставлении с использованием RestKit 0.20
  • Как игнорировать пустые свойства размещенных объектов с помощью restkit
  • RestKit @root @parent accessors для сопоставления
  • RestKit 0.2 Подключение к недействительному сертификату безопасности HTTPS
  • RestKit: отображение массива JSON строк
  • Отображение настроек путаницы в RKObjectMapping - Rest
  • Interesting Posts

    Пробовал отправлять электронную почту из приложения и не работает – Swift (iOS)

    UIColor colorWithPatternImage: проблемы с прозрачностью в сепараторе UITableViewColor

    Поддерживает ли IOS AVSpeechSynthesizer встроенные команды речи

    Правильный способ аннулирования макета коллекции при изменении размера

    iOS Facebook SDK – получение писем друзей

    Mac Dock, как увеличение для iPad

    AdView Banner (SubView) охватывает нижнюю панель инструментов в моем приложении. Как я могу убедиться, что панель инструментов закреплена под баннером?

    Что происходит с более старыми клиентами при переносе сервера приложений из GCM в FCM?

    Как отключить жест повторного салфетки в UINavigationController в iOS 8?

    Instagram iOS-крючки с не-квадратными изображениями

    Приложение для камеры работает в фоновом режиме (многозадачность) IOS8?

    Создайте приложение для чтения электронных книг на iPhone / iPad с использованием библиотеки MuPDF

    Как скрывать NSMutableOrderedSet для общего массива?

    Правильный способ использования переменных экземпляра / свойства / синтезировать с помощью ARC

    Как установить действие для UIButton в UITableViewCell

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.