I brought the substituted sequence out in the closure, but what should I do? "startTimeArrForStart", "endTimeArrForStart", "scheduleArrForStart" will become empty when "return" the contents.
func getScheduleDate(date: Any) -> ([Any], [Any], [Any]) {
var startTimeArrForStart = [Any]()
var endTimeArrForStart = [Any]()
var scheduleArrForStart = [Any]()
self.db.collection("users").document(fireAuthUID).addSnapshotListener { (snapshot, error) in
guard let document = snapshot else {
print("erorr2 \(String(describing: error))")
return
}
guard let data = document.data() else { return }
self.teamIDFromFirebase = data["teamID"] as? String ?? ""
self.db
.collection("teams")
.document(self.teamIDFromFirebase)
.collection("schedule")
.whereField("date_start", isEqualTo: date)
.getDocuments() { (querySnapshot, err) in
if err != nil {
print("scheduleを取得できませんでした")
return
} else {
for document in querySnapshot!.documents {
guard let dataFromFirebase: [String : Any] = document.data() else { return }
let startTimeFromFirebase = dataFromFirebase["date_start"] ?? ""
let endTimeFromFirebase = dataFromFirebase["date_end"] ?? ""
let scheduleFromFirebase = dataFromFirebase["event_title"] ?? ""
startTimeArrForStart.append(startTimeFromFirebase)
endTimeArrForStart.append(endTimeFromFirebase)
scheduleArrForStart.append(scheduleFromFirebase)
self.tableView.reloadData()
}
}
}
}
print(startTimeArrForStart) //<- empty
print(endTimeArrForStart) //<- empty
print(scheduleArrForStart) //<- empty
return (startTimeArrF`enter code here`orStart, endTimeArrForStart, scheduleArrForStart)
}