SwiftUI:JSON索引始终超出范围

时间:2020-04-26 09:24:41

标签: ios swift xcode swiftui

我想知道为什么我的索引总是超出范围。我正在尝试在本地解析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)

First image, showing Model and Parse function

Second image, showing Text

1 个答案:

答案 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]元素。