ios - 使用 DispatchGroup 填充对象的数组无法正常工作
问题描述
我正在尝试用更多对象填充我的对象数组。我一直在使用调度组没有问题,但现在我必须使用一个数组,它不起作用。我让数组为空,就像它从未填充过一样。我对 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)
}
})
}
解决方案
推荐阅读
- powershell - Windows 7/PS2.0 New-Object System.Drawing.Text.PrivateFontCollection 不工作,但在 Windows 10 中工作
- python - 是否可以在 python 中为多个类属性定义一个通用的 setter 方法?
- python - BeautifulSoup Webscrape 问题
- python - pandas 基于链式拆分过滤数据帧
- php - laravel 6 没有观看查看子文件夹
- django - 如何从表单验证中排除字段但保存清理后的数据
- php - 如何定义与多个类的 hasMany 关系?
- html - 如何将表格的值发送到电子邮件?
- regex - 负向后看无法正常工作
- javascript - 了解英国夏令时的 JavaScript 日期