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