Отображение 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 } } 
  • Значение RestKitTransformer не вызывается
  • RestKit RKAttributeMapping fromKeyPath Ошибка в архиве
  • RestKit - запрос без сопоставления объектов
  • Будет ли динамическое сопоставление RestKit решать это сложное отображение JSON?
  • Restkit 0.20 JSON Сопоставление наряду с дополнительными автономными данными
  • Запрос Restkit не отправка параметров
  • Сбой реквизит: получение доступа к json возвращено
  • Обрабатывать ответ POST с помощью RestKit, который не отображается на объект POST
  • Учебное пособие RESTKit POST
  • Не удается удалить объект из Core Data, используя RestKit 0.20
  • Массив отображения RestKit строки и значение KeyPath для одного объекта
  • Interesting Posts

    Как редактировать верхнюю строку состояния в AppleWatch?

    iPhone 6 – другой раскадровки?

    Facebook: «URL-адрес не понравился, потому что он был заблокирован» ошибка в приложении iOS

    iOS – Objective-C: обработка и обработка изображений

    Хранить CLLocationCoordinate2D в NSUserDefaults

    Swift: перегрузки метода, которые отличаются только по типу возврата

    Телеграмма приложения iOS

    IBM Worklight v6.1.0.1: ошибка при использовании Ionic Framework с помощью Worklight и запуск в среде IOS

    Запланированная временная задержка

    Локализовать Localizable.strings с Xcode 4.5

    Удалить индикатор аксессуаров таблицы из строки

    Показывает пустой просмотр при загрузке контроллера просмотра из StoryBoard

    Переменная высота UITableViewCell расширяется после прокрутки до конца списка и вращения

    Granules (ERG) для эксклюзивных резервистов на процессорах Apple

    swift prepareForSegue не работает / exc_breakpoint (код = exc_i386_bpt subcode = 0x0)

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