Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

'instantiateViewController(identifier:creator:)' is only available in iOS 13.0 or newer

Enquanto seguia a aula nessa parte, vi esse erro no xCode: 'instantiateViewController(identifier:creator:)' is only available in iOS 13.0 or newer"

Qual seria melhor forma de corrigir isso? 1 - utilizando o antigo (withIdentifier:) no lugar de (Identifier:)

instantiateViewController(withIdentifier: "Mapa")

2 - usando o antigo e o novo, verificando a versão antes de utilizar o método? (o que torna todo o código bem menos "direto ao ponto")

    var mapa: MapaViewController?
    if #available(iOS 13.0, *) {
         mapa = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "Mapa") as? MapaViewController
    } else {
        mapa = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Mapa") as? MapaViewController
    }
    if let mapaVC = mapa {
        self.navigationController?.pushViewController(mapaVC, animated: true)
    }

Talvez seja uma pergunta meio detalhista demais mas fiquei com essa dúvida :)

1 resposta
solução!

Oi Júlia, não há problemas em usar diretamente a forma antiga:

instantiateViewController(withIdentifier: "Mapa")

O que acontece nessa situação é que a partir do iOS 13.0, houve uma modificação na assinatura do método instantiateViewController(identifier:creator:), porém você não precisa necessariamente usar esse novo método. Como há retrocompatibilidade, as versões novas do iOS são obrigadas a manter os métodos antigos funcionando por um bom tempo (mesmo aqueles com o alerta de obsoletos).

Essa estratégia do if #available(iOS 13.0, *) é interessante quando há uma lógica diferente a ser feita para versões diferentes do iOS. Digamos que agora fosse necessário chamar dois métodos em vez de um só. Aí faríamos essa diferenciação por meio desse if.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software