【发布时间】:2020-04-26 09:24:41
【问题描述】:
我想知道为什么我的索引总是超出范围。我正在尝试在本地解析 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)
【问题讨论】:
-
如果
self.whichTopic不是0你肯定会遇到这个问题? -
不,在这种情况下假设 whichTopic (self.whichTopic) 始终为 0。当 I Text(String(self.articles.count)) 时,它始终返回正确的大小。但不知什么原因,我无法访问索引。就像,如果我想访问第零个项目,它总是返回索引超出排列...
-
那么必须发生的是
getArticles在数据显示在列表中之前被调用。通过拥有一些@State属性来防止这种情况,例如,称为isLoaded来跟踪这一点。如果您想要完整的答案,请告诉我。 -
这是我的完整代码。你有什么主意吗?谢谢你。 pastebin.com/mM1gcbvK