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_result
antes da declaração de método. Seria usado para métodos que têm uma forma mutável (ex. sort
E 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 @discardableResult
antes 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
sort
pensamento 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 @discardableResult
para o uso perfeitamente normal (se não mais comum) popViewController(animated:)
sem capturar o valor de retorno.
consulte Mais informação