SwiftUI: индекс JSON всегда вне диапазона - PullRequest
0 голосов
/ 26 апреля 2020

Интересно, почему мой индекс всегда вне диапазона. Я пытаюсь разобрать 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 = []
    }
}
}

Я загружаю данные на Appar

.onAppear{
            self.topicsVM.getArticles(selectedTopic: self.whichTopic)
    }

Вот были ошибка начала

Text(topicsVM.articles[0].title).foregroundColor(Color.black)

Первое изображение, показывающее функцию модели и анализа

Второе изображение, показывающее текст

1 Ответ

0 голосов
/ 26 апреля 2020

чтобы решить вашу проблему, вы можете сделать это в TopicsView:

init(whichTopic: Int) {
    self.whichTopic = whichTopic
    self.topicsVM.getArticles(selectedTopic: self.whichTopic)
}

Это обеспечит наличие в вашем массиве статей данных, которые вы ожидаете до построения представления.
Тем не менее, вы должны это сделать в любом случае в вашем списке:

                if topicsVM.articles.count > 0 {
                    Text(topicsVM.articles[0].title).foregroundColor(Color.black)
                }

Причина, по которой индекс выходит за пределы допустимого диапазона, заключается в том, что массив "themesVM.articles" заполняется после создания представления. И, конечно же, пустой массив не имеет элемента [0].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...