Я вызываю функцию, эта функция инициализирует класс, и в этом классе у меня есть метод initialize, который выполняет запрос к Firestore.У меня также есть переменная в этом классе, в которой, как только я закончу цикл по базе данных, я изменяю эту self.variable, чтобы она равнялась тому, что я только что создал.По какой-то причине я не могу завершить это, и когда я инициализирую свой объект класса, значение переменной никогда не меняется.
(Предположим, что класс пользователя состоит только из имени и возраста)
Здесь я вызываю свою функцию и инициализирую свой объект
fileprivate func fetch(){
let homeObject = Home()
print (homeObject.user.count)
//count prints out as 0
print (homeObject.test)
//test prints out as 2 .. should be 3 but I'm not sure why?
}
Это класс для Home
class Home{
var user: [User] = []
var test = 1
required init() {
self.test = 2
var userLoop = [User]()
let db = Firestore.firestore()
db.collection("users").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
let name_data = document.data()["name"]! as! String
let age_data = document.data()["age"]! as! String
let userTemp = User(name: name_data , age: age_data)
self.test = 3
userLoop.append(userTemp)
}
self.user = userLoop
}
}
}
По какой-то причине test может измениться на число2, но я полагаю, что этот метод инициализатора не заканчивается, так как он не идет к номеру 3 (как вы видите выше, позже в функции инициализатора я изменяю его на номер 3).Я был бы очень признателен за помощь, застрял на этом в течение нескольких часов!