4
respostas

problemas na exibicao do alerta

Ao tentar exibir o alerta final do valor das medias, o app lanca uma exception e fecha. Detectei o mesmo erro quando tentei executar o codigo pronto, disponivel no fim do curso

4 respostas

O que aparece no console? Ali provavelmente te dê uma boa visão do porquê do erro.

ao dar a exception, recebo a seguinte mensagem:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.'

Tente usar:

DispatchQueue.main.async {
    // Seu alerta aqui dentro
}

Ajudaria também colocar o código que você utilizou para dar esse crash

Entendido. A funcao ficou desta maneira:

@IBAction func buttonCalculaMedia(_ sender: UIBarButtonItem) {
        DispatchQueue.main.async {
            guard let listaDeAlunos = self.gerenciadorDeResultados?.fetchedObjects else { return }
            CalculaMediaAPI().calculaMediaGeralDosAlunos(alunos: listaDeAlunos, sucesso: { (dicionario) in
                if let alerta = Notificacoes().exibeNotificacaoDeMediaDosAlunos(dicionarioDeMedia: dicionario) {
                    print(dicionario)
                    self.present(alerta, animated: true, completion: nil)
                }
            }) { (error) in
                print(error.localizedDescription)
            }
        }
    }

Mas ainda assim, o erro continua:

2019-11-19 18:05:32.293160-0300 Agenda[1890:103590] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.'