TL; DR
popViewController(animated:)retorna UIViewController?e o compilador está emitindo esse aviso, pois você não está capturando o valor. A solução é atribuí-lo a um sublinhado:
_ = navigationController?.popViewController(animated: true)
Mudança rápida 3
Antes do Swift 3, todos os métodos tinham um "resultado descartável" por padrão. Nenhum aviso ocorreria quando você não capturasse o que o método retornou.
A fim de dizer ao compilador que o resultado deve ser capturado, você teve que adicionar @warn_unused_resultantes da declaração de método. Seria usado para métodos que têm uma forma mutável (ex. sortE sortInPlace). Você adicionaria @warn_unused_result(mutable_variant="mutableMethodHere")para informar ao compilador.
No entanto, com o Swift 3, o comportamento é invertido. Todos os métodos agora alertam que o valor de retorno não é capturado. Se você quiser informar ao compilador que o aviso não é necessário, adicione-o @discardableResultantes da declaração do método.
Se você não quiser usar o valor de retorno, precisará informar explicitamente o compilador atribuindo-o a um sublinhado:
_ = someMethodThatReturnsSomething()
Motivação para adicionar isso ao Swift 3:
- Prevenção de possíveis erros (por exemplo, usando o
sortpensamento de modificar a coleção)
- Intenção explícita de não capturar ou precisar capturar o resultado para outros colaboradores
A API do UIKit parece estar atrasada nisso, não adicionando @discardableResultpara o uso perfeitamente normal (se não mais comum) popViewController(animated:)sem capturar o valor de retorno.
consulte Mais informação