Похоже, ваш forEach
l oop печатает идентификаторы документов в первых 4 строках в том порядке, в котором они появляются в массиве myObject
(из вашего вопроса не ясно, как этот порядок установлен), и последние 4 строки печатаются после завершения вашего запроса. Фактически вы выполняете 4 отдельных запроса, и каждый запрос представляет собой отдельный запрос asyn c, поэтому нет гарантии, что порядок будет таким же.
Что вы можете сделать, так это сделать запрос, который возвращает все документы, которые вы хотите, в одном запросе:
func firestoreSearch() {
let db = Firestore.firestore()
let ids = myObjects.map { $0.id }
db.collection("users")
.whereField("objectID", in: ids)
.getDocuments() { (querySnapshot, err) in
for i in querySnapshot!.documents {
print("\(i.documentID)")
//...
}
}
}
Отказ от ответственности: я не знаком с Firestore, поэтому это только из их документации whereField(_:in:)
.
Я не уверен, что они будут в том порядке, в котором указываются идентификаторы (скорее всего, нет), поэтому вам нужно будет использовать другой параметр сортировки или сопоставить сортировку в массиве myObjects
.