【发布时间】:2021-08-09 07:33:46
【问题描述】:
我正在尝试快速调用 json api。我正在使用 CocktailDB,并且 swift 用于 iOS。我收到一条错误消息,提示“线程 3:致命错误:在展开可选值时意外发现 nil”。任何人都知道为什么数据没有被提取并且在解码时为零?
代码如下:
class Drinks {
//URL Links
let shotURL = "www.thecocktaildb.com/api/json/v1/1/filter.php?c=Shot"
//Response Structure
struct shotResponse: Codable {
var drinks: [MyShotDrink]
}
//Drink Structure
struct MyShotDrink: Codable {
var strDrink = ""
var strDrinkThumb = ""
var idDrink = ""
}
var shotArray: [MyShotDrink] = []
func getData(completed: @escaping ()->()){
//Create a URL
guard let url = URL(string: shotURL) else {
print("ERROR: Could not create a URL")
completed()
return
}
//Create a session
let session = URLSession.shared
//Get data
let task = session.dataTask(with: url) { data, response, error in
if let error = error {
print("ERROR: \(error.localizedDescription)")
}
//Handle data
do {
let returned = try JSONDecoder().decode(shotResponse.self, from: data!)
self.shotArray = returned.drinks
} catch {
print("JSON ERROR: \(error.localizedDescription)")
}
completed()
}
task.resume()
}
}
【问题讨论】: