2012-06-29 2 views
2

errorMapping определяется как:Как настроить RestKit errorMapping для принятия более сложного ответа?

[[[[RKObjectManager sharedManager] mappingProvider] errorMapping] setRootKeyPath:@"error"]; 

Он хорошо работает с простым сообщением об ошибке в виде строки:

render status: :unprocessable_entity, json: { :error => 'cannot create topic' } 

Однако, терпит неудачу с хэш-ответ:

render status: :unprocessable_entity, json: { :error => @topic.errors } 

и дает:

W restkit.object_mapping: RKObjectMappingOperation.m: 239: - [RKObjectMappingOperation transformValue: atKeyPath: toType:] Не удалось преобразовать значение в keyPath ''. Нет стратегии для перехода от «JKDictionary» в «NSString»

ли есть способ настроить RestKit errorMapping принять хэш-ответ (и, надеюсь, магазины в NSDictionary)?

ответ

2

Я предполагаю, что вы используете сопоставление ошибок по умолчанию? Это сопоставляет путь ключа ошибки к классу RKErrorMessage. Этот класс ожидает NSString, но у вас есть NSDictionary (JKDictionary, потому что вы используете JSONKit, но все же ...).

Если вы не хотите изменять код сервера, вы можете создать свой собственный класс ошибок на iPhone и заменить это сопоставление по умолчанию. В качестве примера вы можете увидеть RKErrorMessage.m, а также [RKObjectManager init], где создана карта по умолчанию.

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