2017-08-11 22 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

相关问题