Я здесь новичок и изучаю, как кодировать с SwiftUi
Я пытаюсь выяснить, почему я не могу получить доступ к значениям моего массива, выпущенным из Firestore. Класс ниже читает данные из Firestore и заполняет массив данных: [категория], где категория - это структура.
Массив кажется хорошо заполненным, потому что когда я печатаю значения этого массива, он появляется в консоль.
class getCategoriesData: ObservableObject {
@Published var datas = [category]()
init() {
let db = Firestore.firestore()
db.collection("categories").addSnapshotListener { (snap, err) in
if err != nil {
print((err?.localizedDescription)!)
return
}
for i in snap!.documentChanges {
let id = i.document.documentID
let name = i.document.get("name") as! String
let pic = i.document.get("pic") as! String
self.datas.append(category(id: id, name: name, pic: pic))
}
//try inside getCategoriesData
print(self.datas)
print(self.datas[1])
print(self.datas[1].name)
}
}
Но когда я вызываю мой массив из моего представления (код ниже), я получаю эту ошибку:
"Поток 1: фатальная ошибка: индекс выходит за пределы диапазона"
Кажется, что массив не распознается в представлении.
struct ContentView: View {
@State private var searchText: String = ""
@ObservedObject var categories = getCategoriesData()
var body: some View {
VStack {
Text(categories.datas[1].name) //here the error appears
Я не понимаю, почему я могу получить доступ к своему массиву из getCategoriesData, а я не могу внутри ContentView ..
Спасибо за ваши ответы Жан