我遇到此错误
致命错误:解开可选值时意外发现nil
这是我得到错误的代码。
if (method == .POST) {
Alamofire.request(uri, method: .post, parameters: params, encoding: JSONEncoding.default).responseJSON { response in
switch response.result
{
case .success(let value):
// let json = JSON(value)
let SDNetworkResponseValue =
self.prepareResponseObject(success: response.result.isSuccess, withData: value as Any, andError: ((response.result.error! as NSError)))
completionHandler(SDNetworkResponseValue)
case .failure(let error):
let SDNetworkResponseValue = self.prepareResponseObject(success: response.result.isSuccess, withData: response.result.value as Any , andError: (error as NSError))
completionHandler(SDNetworkResponseValue)
}
}
}
答案 0 :(得分:3)
在.success
的情况下,error
的{{1}}始终为result
,展开nil
会导致崩溃。
我假设response.result.error!
参数是可选类型,所以写
andError
答案 1 :(得分:0)
由于您正在使用第三方,因此我无法运行您的代码 但是尝试一下:-
self.prepareResponseObject(success: response.result.isSuccess, withData: value as Any, andError: ((response.result.error as? NSError ?? NSError.init(domain: "Error", code: 400, userInfo: [NSLocalizedDescriptionKey:"Something went wrong"])))
答案 2 :(得分:0)
发生此错误的原因是,您在!
中使用了隐式解包的可选(使用response.result
)。每当您对nil
值使用此运算符时,都会发生崩溃。