我想知道为什么我的索引总是超出范围。我正在尝试在本地解析JSON。这是我的代码。谢谢。
商品模型
struct Article: Decodable {
let title: String
let snapshot: String
}
解析JSON
class TopicsViewModel: ObservableObject {
@Published var articles = [Article]()
func getArticles(selectedTopic: Int) {
switch selectedTopic {
case 0:
self.articles = try! JSONDecoder().decode([Article].self, from: JSON.data(using: .utf8)!)
default:
articles = []
}
}
}
我将数据加载到Appear
.onAppear{
self.topicsVM.getArticles(selectedTopic: self.whichTopic)
}
这里是错误开始
Text(topicsVM.articles[0].title).foregroundColor(Color.black)
答案 0 :(得分:0)
要解决您的问题,您可以在TopicsView中执行此操作:
init(whichTopic: Int) {
self.whichTopic = whichTopic
self.topicsVM.getArticles(selectedTopic: self.whichTopic)
}
这将确保您的articles数组具有在构造视图之前所需的数据。
尽管如此,您仍然应该在列表中执行此操作:
if topicsVM.articles.count > 0 {
Text(topicsVM.articles[0].title).foregroundColor(Color.black)
}
索引超出范围的原因似乎是因为在构建视图之后填充了“ topicsVM.articles”数组。当然,一个空数组没有[0]元素。