Вы можете создать ссылочную переменную базы данных дочерних элементов в вашей базе данных, поэтому вам не придется постоянно вводить .child
.
Я бы предложил попытаться сохранить все значения одновременно, используя Swift Dictionary
, например, так:
// in your loop where you start writing to Firebase
if let databaseRef = databaseRef?.child("Event").child(fireKey) {
let objectToSave = [
"eventCategory": event.eventCatagory,
"eventCity": event.eventCity,
"eventContact": event.eventContact,
// and so on...
"eventStreet": event.eventStreet
] as [String:Any]
databaseRef.setValue(objectToSave) { error, ref in
if error != nil {
// error handle
} else {
// then upload your photo since the write was successful
}
}
}
Во-вторых, поскольку вы выполняете асинхронный код (запись в Firebase) внутрицикл, вам нужно будет обработать это соответствующим образом, так как код будет выполняться раньше, чем вызов базы данных.
Я бы предложил использовать DispatchQueue .Вот некоторые соответствующие сообщения StackOverflow, которые могут научить вас, как внедрить это в ваши асинхронные функции:
Дождитесь окончания выполнения цикла swift for с асинхронными сетевыми запросами