适用于 OS X 的 swift progessindicator



我有一个循环,它向我显示我所有的通讯录联系人。 现在我想显示一个 NSProgressIndicator,它应该显示从 0(=开始请求联系人(到 100(=请求的所有联系人(的进度。为此,我尝试了这样的事情:

let addressBook = ABAddressBook.shared()
let people = addressBook?.people()
for person in people!  as! [ABPerson] {
print(person)
ProgressIndicator.increment(by: 0.22)
}

为什么要递增 0.22?

我有 451 个联系人 100/451 = 0,22% 每个触点

但是会发生什么呢? 打印结果将显示每个联系人,当请求所有联系人时>进度指示器直接跳转到 100%。

我做错了什么?

第二次尝试:

DispatchQueue.global(qos: .background).async {
let addressBook = ABAddressBook.shared()
let people = addressBook?.people()
let stepPercent = 100 / (people?.count)!
for person in people!  as! [ABPerson] {
print(person)
DispatchQueue.main.async {
self.ProgressIndicator.increment(by: Double(stepPercent))
}
}

我的解决方案:

DispatchQueue.global(qos: .background).async {
let addressBook = ABAddressBook.shared()
let people = addressBook?.people()
print(Double((people?.count)!))
let stepPercent = 100.00 / (Double((people?.count)!))
print(stepPercent)
for person in people!  as! [ABPerson] {
print(person)
DispatchQueue.main.async {
self.ProgressIndicator.increment(by: Double(stepPercent))
}
}

感谢您的支持

最新更新