Swift Alamofire 2,如何获得错误?

Swift Alamofire 2,如何获得错误?,swift,swift2,alamofire,Swift,Swift2,Alamofire,在alamofire 2中,他们引入了结果类型: Alamofire.request(.GET, URLString, parameters: ["foo": "bar"]) .responseJSON { request, response, result in switch result { case .Success(let JSON): print("Success with JSON: \(JSON)")

在alamofire 2中,他们引入了结果类型:

Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
    .responseJSON { request, response, result in
        switch result {
        case .Success(let JSON):
            print("Success with JSON: \(JSON)")
        case .Failure(let data, let error):
            print(error)
        }
    }
error属于ErrorType类型,其唯一成员是debugDescription,它打印:

可选(错误域=NSURLErrorDomain代码=-1009“Es besteht anscheinend keine Verbindung zum互联网。” UserInfo={NSUnderlyingError=0x135f4e7c0{Error 域=KCFerrorDomainCFN网络代码=-1009“(空)” UserInfo={{kCFStreamErrorCodeKey=8,{kCFStreamErrorDomainKey=12}}, NSErrorFailingURLStringKey=myurl, NSErrorFailingURLKey=myurl, _kCFStreamErrorDomainKey=12,kCFStreamErrorCodeKey=8,NSLocalizedDescription=Es最适合Anscheinen和keine Verbindung zum 互联网.})

如何仅从错误中获取NSLocalizedDescription而不是整个调试消息

在alamofire 1中,错误类型为NSError,可通过以下方式获取错误消息:

error.localizedDescription

然而,在alamofire 2中,这似乎是不可能的。有什么想法吗?

这是错误对象上的字符串:

error.localizedDescription
在本文中,说明了一种新的结果类型

public enum Result<Value> {
    case Success(Value)
    case Failure(NSData?, ErrorType)
}

ErrorType可以转换为N错误。试试这个:

Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
    .responseJSON { request, response, result in
        switch result {
        case .Success(let JSON):
            print("Success with JSON: \(JSON)")
        case .Failure(let data, let error):
            if let error = error as NSError? {
                print(error.localizedDescription)
            }
        }
    }

@MartinR唯一的错误是“debugDescription”,它是一个字符串。你是对的,我错读了这个问题,并假设
error
是一个
NSError
。对不起!不,“类型ErrorType的值?没有成员‘localizedDescription’。谢谢,现在可以了。对你的答案稍加更正。编译器希望我使用“error as!”!NSError”而不是“错误为NSError”。@artworkadシ: 您使用的是哪个Xcode版本?我使用的是最终的Xcode 7.0(7A220),强制转换
错误为!NSError
会向编译器发出警告:“从'ErrorType'强制转换为'NSError'总是成功;你的意思是使用'as'?“。我的错,你的答案是正确的。但是,如果我访问这样的错误:result.error,我必须使用as!@artworkadシ: 是,因为
Result
error
属性返回可选的:
ErrorType?
Alamofire.request(.GET, URLString, parameters: ["foo": "bar"])
    .responseJSON { request, response, result in
        switch result {
        case .Success(let JSON):
            print("Success with JSON: \(JSON)")
        case .Failure(let data, let error):
            if let error = error as NSError? {
                print(error.localizedDescription)
            }
        }
    }