gpt4 book ai didi

ios - 如何在 Swift 中将任务发送到后台队列?

转载 作者:行者123 更新时间:2023-12-01 15:38:59 25 4
gpt4 key购买 nike

我有一个当用户点击按钮时设置的本地通知。我想将其发送到后台线程,然后更新 UI。这是一种安全的方法吗?

    DispatchQueue.global(qos: .background).async { // sends registration to background queue
center.add(request, withCompletionHandler: {(error) in
if let error = error {
print(error)
}
})
DispatchQueue.main.async {
try! self.realm.write {
self.realm.add(task)
self.updateData()
}
}
}

最佳答案

您应该在完成处理程序中移动主线程块,并在写入 Realm DB 时使用 do/catch 块。否则,您的代码看起来不错。

重要提示:使用 [weak self]如果您不是单例,则在 DispatchQueue 块内。 More details here.

DispatchQueue.global(qos: .utility).async { // sends registration to background queue
center.add(request) { error in
if let error = error {
print(error)
} else {
DispatchQueue.main.async {
do {
try self.realm.write {
self.realm.add(task)
self.updateData()
} catch {
print("Error while writing to the Realm DB:", error)
}
}
}
}
})

}

关于ios - 如何在 Swift 中将任务发送到后台队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45643822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com