Я пытаюсь заполнить массив моего объекта большим количеством объектов. Я использовал группу рассылки без проблем, но теперь, когда мне нужно использовать массив, он не работает. Я получаю массив пустым, как если бы он никогда не был заполнен. Я не очень знаком с GCD, и я хотел бы получить совет о том, что я делаю неправильно.
В первый раз, когда я использую GCD с клиентом, он работает, но когда я использую его снова для всех элементов, это не так. Я почему-то знаю, что он не ожидает обработки всех элементов и отправляет пустой массив, инициализированный с начала.
Надеюсь, кто-нибудь может мне помочь с этим. Ура! * * 1005
static func loadAll(_ completion: @escaping ([Ticket1]?) -> Void) -> UInt {
return FirebaseService.instance.readAll(from: .tickets, returning: Ticket1.self, { (tickets) in
if tickets != nil {
var result = [Ticket1]()
let dispatchGroup = DispatchGroup()
for var ticket in tickets! {
dispatchGroup.enter()
Customer.loadSingleObject(withID: ticket.customerID, { (customer) in
if customer != nil {
ticket.customer = customer
for itemID in ticket.itemsID {
dispatchGroup.enter()
Item.loadSingleObject(withID: itemID, { (item) in
if item != nil {
ticket.items?.append(item!)
} else {
completion(nil)
}
dispatchGroup.leave()
})
}
result.append(ticket)
} else {
completion(nil)
}
dispatchGroup.leave()
})
}
dispatchGroup.notify(queue: .main, execute: {
result = result.sorted(by: { $0.createdAt > $1.createdAt })
completion(result)
})
} else {
completion(nil)
}
})
}