TL; DR
popViewController(animated:)vuelve UIViewController?, y el compilador está dando esa advertencia ya que no está capturando el valor. La solución es asignarlo a un guión bajo:
_ = navigationController?.popViewController(animated: true)
Cambio rápido 3
Antes de Swift 3, todos los métodos tenían un "resultado descartable" por defecto. No se produciría ninguna advertencia cuando no capturara lo que devolvió el método.
Para decirle al compilador que se debe capturar el resultado, debe agregarlo @warn_unused_resultantes de la declaración del método. Se usaría para métodos que tienen una forma mutable (ej. sortY sortInPlace). Agregarías @warn_unused_result(mutable_variant="mutableMethodHere")para contarle al compilador.
Sin embargo, con Swift 3, el comportamiento se voltea. Todos los métodos ahora advierten que el valor de retorno no se captura. Si desea decirle al compilador que la advertencia no es necesaria, agregue @discardableResultantes de la declaración del método.
Si no desea utilizar el valor de retorno, debe decirle explícitamente al compilador asignándolo a un guión bajo:
_ = someMethodThatReturnsSomething()
Motivación para agregar esto a Swift 3:
- Prevención de posibles errores (por ejemplo, usando
sortpensar que modifica la colección)
- Intento explícito de no capturar o necesitar capturar el resultado para otros colaboradores
La API de UIKit parece estar retrasada en esto, no agregando @discardableResultpara el uso perfectamente normal (si no más común) popViewController(animated:)sin capturar el valor de retorno.
Lee mas