2017-08-11 69 views
0

我有一個當用戶點擊一個按鈕時設置的本地通知。我想將其發送到後臺線程,然後更新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() 
      } 
     } 
    } 

回答

0

您應該在完成處理程序中移動主線程塊。否則,你的代碼看起來很好。

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() 
       } 
      } 
     } 
    }) 

} 
+0

非常感謝! – ayjoy

+0

如果此答案解決了您的問題,請繼續並將其標記爲已接受。 – bdash