Alamofire,Swift:可能是什么原因导致此错误?

问题描述 投票:0回答:2

什么可能导致此错误?

突然之间,我突然出现以下错误。我已经重新安装了cocoapod,清理了构建文件夹,并且已经重新安装了该应用程序,但都没有修复错误。

ERROR:线程1:致命错误:展开一个可选值时意外发现nil

CODE:

let recoverUrl = "http://www.website.com/recover.php?email=\(emailData)&local=application"

let urlEncodedString = recoverUrl.replacingOccurrences(of: " ", with: "%20")

parseRecover(url: urlEncodedString)

//////////////

func parseRecover(url : String){ AF.request(url).responseJSON(completionHandler: { response in self.parseData(JSONData: response.data!) }) }

func parseData(JSONData : Data){

do {

 var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONObject

if let recoverJSON = readableJSON["Recover"] as? [JSONObject] {

for i in 0..<recoverJSON.count {

let JSON = recoverJSON[i]

let status = JSON["status"] as! String

let message = JSON["message"] as! String

if status == "Error" {self.Alert01("\(message)")}

else if status == "Success" { self.Alert02("\(message)") }

}}}

catch { print(error) }

}

错误发生在:

func parseRecover(url : String){ AF.request(url).responseJSON(completionHandler: { response in self.parseData(JSONData: response.data!) }) }
swift alamofire
2个回答
1
投票

无法保证响应中包含数据,因此强行解压缩该值可能会导致崩溃。我建议您创建Decodable类型来解析您的响应,并使用Alamofire的responseDecodable方法来处理您的响应。

此外,即使您不采用DecodableresponseJSON已经使用Data解析了您的响应JSONSerialization,所以您只需访问response.result即可查看输出。


-1
投票

response.data!在这种情况下为nil,请签出SwiftyJSON-与Alamofire完美配合的JSON解析器库>

参考:https://github.com/SwiftyJSON/SwiftyJSON#work-with-alamofire

© www.soinside.com 2019 - 2024. All rights reserved.