[英]How to send tasks to the background queue in Swift?
我有一個當用戶點擊按鈕時設置的本地通知。 我想將其發送到后台線程,然后更新 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 塊。 否則,您的代碼看起來不錯。
重要提示:如果您不是單身人士,請在 DispatchQueue 塊中使用[weak self]
。 更多細節在這里。
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)
}
}
}
}
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.