Я пытаюсь инициализировать мою модель представления коллекции, которая содержит список [Users] с привязкой firebase, в которой хранятся данные.
Вот код модели представления коллекции:
typealias JSON = [String:Any]
class HomeDataSource: Datasource {
var users: [User]
init?(with snapshot:DataSnapshot) {
var users = [User]()
guard let snapDict = snapshot.value as? [String: [String:Any]] else {return nil}
for snap in snapDict {
guard let user = User(dict: snap.value) else {continue}
users.append(user)
}
self.users = users
}
}
Модель пользователя:
struct User {
let name: String
let username: String
init?(dict: JSON) {
guard let name = dict["name"] as? String,
let email = dict["email"] as? String
else {return nil}
self.name = name
self.username = email
}
}
Snap Firebase Snap:
Snap (users) {
8CVeHMNHI6hZAWj1zhGHEjPwYYz1 = {
email = "Silviu@isidors.sjsj";
name = Bshdjdj;
};
9CuqgR4Es7TOPPJQEpSnQXlfYnm1 = {
email = "Test@silviu.com";
name = "Test@silviu.com";
};
DBqGWlpdJKME570euqUz2rqI5Z83 = {
email = "Test@test.test";
name = Test;
};
}
Функция извлечения:
func fetchUser() {
let ref = Database.database().reference().child("users")
ref.observe(.childAdded, with: { (snapshot) in
let user = User(dict: snapshot.value as! JSON)
self.users.append(user!)
print(self.users)
let new = HomeDataSource(with: snapshot)
print(new)
DispatchQueue.main.async(execute: {
self.datasource = new
self.collectionView?.reloadData()
})
}, withCancel: nil)
}
В данный момент я получаю массив пользователей из Firebase, однако представление моей коллекции не обновится.
У меня вопрос, как мне обновить мою модель представления коллекции и функцию выборки, чтобы она могла извлекать данные из Firebase и правильно заполнять представление коллекции?