У меня есть приложение Picker View в моем приложении, и я хочу, чтобы оно отображало документы из коллекции в Firestore. Я знаю, что мой Picker View работает, но я не могу заставить элементы из firestore добавлять его до загрузки представления, поэтому они не отображаются в моем представлении выбора (или, по крайней мере, в этом-то и проблема).
Вот соответствующий код:
let db = Firestore.firestore()
let userID = Auth.auth().currentUser!.uid
lazy var pickerData: [String] = [String]()
lazy var pickedSchool = String()
override func viewDidLoad() {
super.viewDidLoad()
self.picker.delegate = self
self.picker.dataSource = self
pickerData += ["Select your school"]
db.collection("schoolsUsing").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
let school = document.data()["school"] as? String
self.pickerData += [school!]
print("added " + school!)
}
}
}
for item in pickerData {
print(item)
}
}
Как видите, я поместил несколько «отпечатков» в консоль, чтобы лучше понять, что происходит, и вот консоль:
Select your school
2018-06-25 10:25:32.379608-0400 Student Council App[3092:1552543] TIC Read Status [1:0x0]: 1:57
2018-06-25 10:25:32.525625-0400 Student Council App[3092:1552563] 4.11.0 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.40100000 started
2018-06-25 10:25:32.526111-0400 Student Council App[3092:1552563] 4.11.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled
2018-06-25 10:25:33.028197-0400 Student Council App[3092:1552540] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2018-06-25 10:25:33.030894-0400 Student Council App[3092:1552540] [MC]
Reading from public effective user settings.
added Longmeadow High School
added East Longmeadow High School
Мы можем видеть, что «выберите школу» появляется в самом начале, принимая команду из цикла for в конце viewDidLoad (), но «добавленная школа» появляется только в конце firebase mumbo-jumbo , Мне нужно, чтобы цикл for распечатывал все в pickerData в начале, чтобы он показывал и школы.