迅速包裹时意外发现零

时间:2018-08-03 10:04:16

标签: swift alamofire

我遇到此错误

  

致命错误:解开可选值时意外发现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)


                }
            }
        }

3 个答案:

答案 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值使用此运算符时,都会发生崩溃。