Я хочу вернуть currData
, который является типом wData
(нестандартный тип). currData
объявлен в начале функции и будет установлен в do-catch
блоке:Пытается обновить переменную в блоке do-catch, которая будет возвращена: фатальная ошибка: неожиданно обнаружена нуль при развертывании Необязательное значение
func getWData(stnID: Int) -> wData{
var currData: wData?
let parameters: Parameters = ["id": String(stnID), "accesstype": "w"]
Alamofire.request("https://myurl.tld", parameters: parameters).response { response in
print("Request: \(response.request)")
print("Response: \(response.response)")
print("Error: \(response.data)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
let dArr = utf8Text.components(separatedBy: "~")
do {
try currData = wData(hash: Int(dArr[0])!, stnName: String(dArr[1])!)
} catch {
print("error creating wData Object: \(error)")
}
}
}
return currData!
}
Но когда я пытаюсь вернуть currData
объект Я получаю следующее сообщение об ошибке:
fatal error: unexpectedly found nil while unwrapping an Optional value
Мой wData
класс выглядит следующим образом:
class wData{
var hash: Int
var stnName: String
init(hash: Int, stnName: String) {
self.hash = hash
self.stnName = stnName
}
}
Я думал, что я мог бы создать статическую переменную в моем классе:
class wData{
static var currDObj: wData?
var hash: Int
var stnName: String
init(hash: Int, stnName: String) {
self.hash = hash
self.stnName = stnName
currDObj = self
}
}
А потом вернуть currDObj в моей функции getWData с:
return weatherData.currData!
Но она по-прежнему дает мне ошибку. Что я сделал неправильно?
Какое значение DARR [0] и DARR [1] – zombie
Вы не можете вернуть значение из функции, что делает асинхронный вызов , – rmaddy