Используя Restkit v0.2x , вы можете сопоставить все атрибуты JSON, которые вы хотите, с уже существующим RKErrorMessage.userInfo
Свойством словаря следующим образом [ Swift ]:
let errorMapping = RKObjectMapping(forClass: RKErrorMessage.self);
errorMapping.addPropertyMapping(RKAttributeMapping(fromKeyPath: nil, toKeyPath: "userInfo"));
let errorResponseDescriptor = RKResponseDescriptor(
mapping: errorMapping,
method: RKRequestMethod.Any,
pathPattern: nil,
keyPath: "error", //or nil, according to your json response
statusCodes: RKStatusCodeIndexSetForClass(UInt(RKStatusCodeClassClientError)))
);
Итак, вы можете отобразить ответ JSON с ошибкой, подобный этому:
{
"error": {
"message": "Error message",
"cause": "...",
"code": "my_error_code",
"url": "..."
...
}
}
И получить RKErrorMessage
со всеми атрибутами в закрытии failure
следующим образом:
failure: { (operation, error) -> Void in
if let errorMessage = error.userInfo?[RKObjectMapperErrorObjectsKey]?.firstObject as? RKErrorMessage{
let message = errorMessage.userInfo["message"] as! String;
let code = errorMessage.userInfo["code"] as! String;
...
}
}
Надеюсь, это кому-нибудь пригодится!