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

时间:2020-03-15 02:38:48

标签: swift alamofire

什么可能导致此错误?

突然,我突然冒出了下面的错误。我已经重新安装了cocoapod,清理了构建文件夹,并且已经重新安装了该应用程序,但没有一个可以解决该错误。

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

代码:

const o = {A : 1, B : 2, C : 3, D : 4}
const arrayLike = swapKV(o);
arrayLike.length = 5;
const array = Array.from(arrayLike);
array.shift(); // undefined
array; // ["A", "B", "C", "D"]

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

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

}

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

已解决:问题出在我的php文件中。我使用的是$ _GET [''],应该是$ _POST ['']或$ _REQUEST ['']

答案 2 :(得分:-1)

在这种情况下,

response.data!nil,请签出SwiftyJSON-与Alamofire完美配合的JSON解析器库

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