Проблема, с которой вы столкнулись, заключается в том, что функция Firebase Observe отправляет обратный вызов в виде (снимка).
Требуется немного времени, чтобы зайти в Интернет, чтобы получить данные, поэтому Firebase возвращает данные асинхронно.Поэтому ваш код в цикле for будет запущен до того, как будут возвращены ваши данные о базе данных.Во время выполнения кода цикла for массив все еще пуст.Но код цикла for в отдельной функции, как вы видите в моем примере кода, и вызывайте его сразу после цикла for внутри вашего firebase наблюдать за вызовом.
Попробуйте вместо этого:
override func viewDidLoad() {
getFirebaseData()
}
func getFirebaseData() {
let ref = Database.database().reference()
ref.child("Faculty ").observe(.value, with: { (snapshot) in
if let result = snapshot.children.allObjects as? [DataSnapshot] {
for child in result {
let FacultyName = child.key as! String
print(FacultyName)
self.NamesofFac.append(FacultyName)
}
printNames()
}
})
}
func printNames() {
for i in 0...self.NamesofFac.count {
print(self.NamesofFac.count)
print(" line")
print(self.NamesofFac)
}
}
Этоесли он не будет печатать имена, пока они не будут полностью загружены из firebase.
PS: Ваши соглашения об именах неверны.Вы, кажется, называете переменные заглавными буквами.Переменные должны быть верблюжьими.Классы должны начинаться с заглавной буквы.