如果坠机事件表明
force unwrapping nil
那可能是因为
let task = URLSession.shared.dataTask(with: url!)
正在展开
url
这是一个
nil
此处为可选变量。
但无论如何,您的完成处理程序被调用在错误的位置,请尝试将您的
finished()
回调到
do
而不是声明。因为
finished
你一打电话就被处决了
exercise.parseImageData()
if error != nil {
print("Error while parsing JSON")
}
else {
do {
if let data = data,
let fetchedImageData = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String:Any],
let images = fetchedImageData["results"] as? [[String: Any]] {
for eachImage in images {
let imageUrl = eachImage["image"] as! String
self._imageUrl = URL(string: imageUrl)
}
print(self._imageUrl)
finished()
}
}
catch {
print("Error while parsing data.")
}
}