繁体   English   中英

RESTKit + Swift的对象映射问题

[英]Object Mapping issue with RESTKit+Swift

尝试打印错误描述时,我使用RestKit和Swift遇到对象映射问题。 下面是我用来映射RestKit错误的代码:

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>

我假设您想从RestKit NSError对象获取自定义错误对象。 我认为您可以使用以下方法实现此目的:

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

如果使用的是RestKit v2.x ,则应该以这种方式访问​​错误对象:

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

我认为您只是错过了将其显示在alertView中的调用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM