Я использую массив, хранящийся в структуре, для хранения записей из базы данных Firebase. Я успешно могу загрузить данные, так как могу распечатать каждый элемент базы данных. Тем не менее, массив с именем allMovies почему-то пуст, хотя я просто заполнил его данными из firebase.
Почему это происходит?
Вот мой код:
Глобальная структура, которая содержит мой массив и его изменения, видна во всей программе.
struct GlobalMovies {
static var allMovies:[Movies] = []
static var hotMovies:[Movies] = []
static var upcomingMovies:[Movies] = []
}
Функциональность, которая читает данные из моей базы. Как упоминалось ранее, я успешно могу читать данные.
var ref:DatabaseReference?
var databaseHandle:DatabaseHandle?
databaseHandle = ref?.child("Movies").observe(.childAdded, with: { (snapshot) in
if let userDict = snapshot.value as? [String:Any] {
GlobalMovies.allMovies.append(Movies(name: userDict["name"]! as! String ,
rating: userDict["rating"]! as! String,
length: userDict["length"]! as! String,
genre: userDict["genre"]! as! String ,
cast : userDict["cast"] as! [String],
cinemas : userDict["cinemas"] as! [String],
releaseDate: userDict["releaseDate"]! as! String,
director: userDict["director"]! as! String,
description: userDict["description"]! as! String ,
image: userDict["image"]! as! String,
isHot: userDict["isHot"]! as! Bool,
isUpcoming: userDict["isUpcoming"]! as! Bool))
self.table.reloadData()
}
})
print(GlobalMovies.allMovies.count) //prints out 0 when it shouldn't
Мой файл json:
{
"Movies": {
"Movie1" : {
"name": "The Incredible Hulk",
"rating": "4/5",
"length": "120 minutes",
"genre": "Fantasy",
"cast" : ["Lisa Simpson", "Peter Griffin"],
"cinemas": ["A", "B"],
"releaseDate": "12/05/2018",
"director": "Mike Lancaster",
"description" : "Lorem Ipsum",
"image": "default",
"isHot": true,
"isUpcoming": false
},
"Movie2" : {
"name": "Star Wars",
"rating": "5/5",
"length": "120 minutes",
"genre": "SciFi",
"cast" : ["Lisa Simpson", "Peter Griffin"],
"cinemas": ["A", "B"],
"releaseDate": "12/05/2018",
"director": "Mike Lancaster",
"description" : "Lorem Ipsum",
"image": "default",
"isHot": true,
"isUpcoming": false
}
}
}