Swift 阿拉莫菲尔,斯威夫特:是什么导致了这个错误?

Swift 阿拉莫菲尔,斯威夫特:是什么导致了这个错误?,swift,alamofire,Swift,Alamofire,是什么导致了这个错误 突然,不知从哪里我开始发现下面的错误。我已经重新安装了cocoapod,清理了构建文件夹,重新安装了应用程序,但没有一个修复了错误 错误:线程1:致命错误:在展开可选值时意外发现nil 代码: ////////////// func parseRecover(url : String){ AF.request(url).responseJSON(completionHandler: { response in self.parseData(JSONData: respons

是什么导致了这个错误

突然,不知从哪里我开始发现下面的错误。我已经重新安装了cocoapod,清理了构建文件夹,重新安装了应用程序,但没有一个修复了错误

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

代码:

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

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) }

}

无法保证响应具有数据,因此强制展开该值可能会导致崩溃。我建议您创建可解码类型来解析您的响应,并使用Alamofire的responseDecodable方法来处理您的响应


此外,即使您不采用可解码,responseJSON也已经使用JSONSerialization解析了您的响应数据,因此您可以访问response.result以查看输出。

解决了:问题在我的php文件中。我使用的是$\u GET[],应该是$\u POST[]或$\u REQUEST[]

我通常自己解决问题,但我问这个问题的原因是因为我认为这与我的代码无关。我有另一个应用程序与完全相同的代码,它工作得很好。只是看看是否有人有类似的问题。
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!) }) }