什么可能导致此错误?
突然,我突然冒出了下面的错误。我已经重新安装了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) }
}
答案 0 :(得分:1)
不能保证响应中包含数据,因此强行解压缩该值可能会导致崩溃。建议您创建Decodable
类型来解析您的响应,并使用Alamofire的responseDecodable
方法来处理您的响应。
此外,即使您不采用Decodable
,responseJSON
也已经使用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