Alamofire, Swift: Что может быть причиной этой ошибки? - PullRequest
0 голосов
/ 15 марта 2020

Что может быть причиной этой ошибки?

Внезапно из ниоткуда я начал получать ошибку ниже. Я переустановил cocoapod, очистил папку сборки и переустановил приложение уже, и ничего из этого не устранило ошибку.

ОШИБКА: Поток 1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательное значение

КОД:

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

Ответы [ 3 ]

1 голос
/ 15 марта 2020

Нет гарантии, что ответ содержит данные, поэтому принудительное развертывание значения может привести к сбоям. Я предлагаю вам создать Decodable типы для анализа ваших ответов и использовать метод Alamofire responseDecodable для обработки ваших ответов.

Кроме того, даже если вы не принимаете Decodable, responseJSON уже анализирует ваш ответ Data с использованием JSONSerialization, так что вы можете просто получить доступ к response.result, чтобы увидеть результат.

0 голосов
/ 15 марта 2020

решено: Проблема была в моем файле php. Я использовал $ _GET [''], и это должен был быть $ _POST [''] или $ _REQUEST ['']

0 голосов
/ 15 марта 2020

response.data! равно nil, в этом случае проверьте SwiftyJSON - библиотеку синтаксического анализатора JSON, которая прекрасно работает с Alamofire

Ref: https://github.com/SwiftyJSON/SwiftyJSON#work -с -alamofire

...