如何将任务发送到Swift中的后台队列?
问题描述:
我有一个当用户点击一个按钮时设置的本地通知。我想将其发送到后台线程,然后更新UI。这是一个安全的方法吗?如何将任务发送到Swift中的后台队列?
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()
}
}
}
答
您应该在完成处理程序中移动主线程块。否则,你的代码看起来很好。
DispatchQueue.global(qos: .background).async { // sends registration to background queue
center.add(request, withCompletionHandler: {(error) in
if let error = error {
print(error)
} else {
DispatchQueue.main.async {
try! self.realm.write {
self.realm.add(task)
self.updateData()
}
}
}
})
}
非常感谢! – ayjoy
如果此答案解决了您的问题,请继续并将其标记为已接受。 – bdash