2015-03-31 131 views
0

我在尝试打印错误描述时遇到了使用RestKit和Swift的对象映射问题。下面是我使用的地图RestKit错误代码:RESTkit + Swift的对象映射问题

let errorObjectMapping = RKObjectMapping(forClass: MyErrorModelClass.self) 
    errorObjectMapping.addAttributeMappingsFromArray([ 
     "reason", 
     "errorMessage" 
]) 
let errorCodes = NSMutableIndexSet() 
    errorCodes.addIndexes(RKStatusCodeIndexSetForClass(UInt(RKStatusCodeClassClientError))) 
    errorCodes.addIndexes(RKStatusCodeIndexSetForClass(UInt(RKStatusCodeClassServerError))) 

objectManager.addResponseDescriptor(RKResponseDescriptor(
    mapping: errorObjectMapping, 
    method: RKRequestMethod.Any, 
    pathPattern: nil, 
    keyPath: "error", 
    statusCodes: errorCodes)) 

代码块中,我打印的错误描述:错误的

failure: { (objectRequestOperation: RKObjectRequestOperation!, error: NSError!) -> Void in 

        println("error \(error).") 
    } 

印刷描述:

Error Domain=org.restkit.RestKit.ErrorDomain Code=1004 <MyErrorModelClass: 0x17023bc00>" UserInfo=0x17406e480 {RKObjectMapperErrorObjectsKey=(
"<MyErrorModelClass: 0x17023bc00> 
+0

你想达到什么目的? – Rengers 2015-03-31 14:19:52

+0

在失败块中,我想显示AlertView中的实际错误,但获取对象类型响应。 当我更换 '让errorObjectMapping = RKObjectMapping(forClass:MyCustomClassError.self)' 随着 '让errorObjectMapping:RKObjectMapping = RKObjectMapping.requestMapping()' 错误的印刷说明是: **错误域名= org.restkit.RestKit.ErrorDomain代码= 1004 “” 的UserInfo = 0x170860040 {RKObjectMapperErrorObjectsKey =( { 原因= “发生错误,请稍后再试。”; } ),NSLocalizedDescription = } ** – 2015-03-31 14:26:54

+0

我没有看到你的问题是,你还没有完成编写代码。添加警报以使用错误 – Wain 2015-03-31 15:06:55

回答

0

我假设你想从RestKit NSError对象中获取自定义错误对象。我想你可以使用实现这一目标:

let customError = error.userInfo?[RKObjectMapperErrorObjectsKey] as? MyErrorModelClass 
0

如果您正在使用RestKit V2.X你应该访问这样的错误对象:

if let errorMessage = error.userInfo?[RKObjectMapperErrorObjectsKey]?.firstObject as? MyErrorModelClass{ 
    //do your stuff 
} 
0

我认为你只是缺少调用在alertView中显示它。

var alert = UIAlertController(title: "Alert", message: error.localizedDescription, preferredStyle: UIAlertControllerStyle.Alert)