如何在 Swift 中将任务发送到后台队列?
Posted
技术标签:
【中文标题】如何在 Swift 中将任务发送到后台队列?【英文标题】:How to send tasks to the background queue in Swift? 【发布时间】:2017-08-11 21:10:13 【问题描述】:我有一个在用户点击按钮时设置的本地通知。我想将此发送到后台线程,然后更新 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()
【问题讨论】:
【参考方案1】:您应该在完成处理程序中移动主线程块,并在写入 Realm DB 时使用 do/catch 块。否则,您的代码看起来不错。
重要提示:如果您不在单例中,请在 DispatchQueue 块中使用 [weak self]
。 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)
)
【讨论】:
以上是关于如何在 Swift 中将任务发送到后台队列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中将触摸事件发送到 nextResponder