Как отправить задачи в фоновую очередь в 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()
}
}
}
1 ответ
Решение
Вы должны переместить блок основного потока внутри обработчика завершения. В противном случае ваш код выглядит нормально.
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()
}
}
}
})
}