我正在尝试使用更多对象填充对象的数组。我一直在使用调度组没有问题,但现在我必须使用数组,它不起作用。如果它从未填充过,我将数组清空。我对GCD并不熟悉,我想知道我做错了什么。
我第一次将GCD与客户一起使用时,它可以工作,但是当我再次使用它来处理所有项目时,它却没有。我知道它不是在等待处理所有项目,而是从头开始发送空数组。
希望有人可以帮助我。干杯!
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)
}
})
}