下面是我的代码,我得到了隐式Unwrapped Nil错误,我知道这是因为self.QQs = QQs!行由于!。我不确定为什么QQs是nil,因为我从URL中提取的不是(正如你在链接中看到的那样,它显示了我正在使用的公共JSON)。为什么QQs是nil?
struct QQ: Codable, Identifiable {
enum CodingKeys: CodingKey {
case question
case answer1
case answer2
case answer3
case answer4
case logo
}
var id = UUID()
var question: String
var answer1: String
var answer2: String
var answer3: String
var answer4: String
var logo: String
}
class ReadData: ObservableObject {
@Published var QQs = [QQ]()
init(){
loadData()
}
func loadData() {
let url = URL(string: "https://api.jsonbin.io/v3/b/641f82dcace6f33a22fbec99")
let data = try? Data(contentsOf: url!)
let QQs2 = try? JSONDecoder().decode([QQ].self, from: data!)
self.QQs = QQs!
}
}
1条答案
按热度按时间s4n0splo1#
您不会从服务器收到数组,也不会从服务器收到类似
QQ
的任何东西,这就是为什么您的应用程序会因解码而崩溃。将
https://api.jsonbin.io/v3/b/641f82dcace6f33a22fbec99
放入浏览器,然后将原始json数据复制并粘贴到https://app.quicktype.io/中,正确的模型将为您生成。调整生成的代码,您就得到了这些模型,如示例代码所示。