簡體   English   中英

如何在 Swift 中將任務發送到后台隊列?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM