UIApplication.delegate deve ser usado apenas no thread principal [duplicado]

Esta pergunta já tem uma resposta aqui:

- [UIApplication delegate] deve ser chamado apenas do thread principal 2 respostas

Eu tenho o código a seguir no meu representante de aplicativo como um atalho para trabalhar com CoreData em meus outros viewControllers:

let ad = UIApplication.shared.delegate as! AppDelegate
let context = ad.persistentContainer.viewContext

No entanto, agora recebo a mensagem de erro:

"API da interface do usuário chamada do thread de segundo plano" e "UIApplication.delegate devem ser usadas apenas do thread principal".

Estou trabalhando com o CoreData enquanto meu aplicativo está em segundo plano, mas é a primeira vez que vejo essa mensagem de erro. Alguém sabe o que está acontecendo aqui?

Atualização: tentei mover isso para dentro da própria classe appDelegate e usando o seguinte código -

let dispatch = DispatchQueue.main.async {
    let ad = UIApplication.shared.delegate as! AppDelegate
    let context = ad.persistentContainer.viewContext
}

Agora, não posso mais acessar as variáveis de anúncio e contexto fora doAppDelegate. Tem algo que estou perdendo?

questionAnswers(1)

yourAnswerToTheQuestion