2017-08-11 2 views
0

Ich habe eine lokale Benachrichtigung, die festgelegt wird, wenn ein Benutzer auf eine Schaltfläche klickt. Ich möchte dies an den Hintergrundthread senden und dann die Benutzeroberfläche aktualisieren. Ist das ein sicherer Weg?Wie werden Aufgaben in Swift an die Hintergrundwarteschlange gesendet?

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

Antwort

0

Sie sollten den Haupt-Threadblock in den Completion-Handler verschieben. Ansonsten scheint Ihr Code in Ordnung zu sein.

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

Vielen Dank! – ayjoy

+0

Wenn diese Antwort Ihr Problem gelöst hat, dann gehen Sie bitte voran und markieren Sie es als akzeptiert. – bdash

Verwandte Themen