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_result
antes de la declaración del método. Se usaría para métodos que tienen una forma mutable (ej. sort
Y 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 @discardableResult
antes 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
sort
pensar 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 @discardableResult
para el uso perfectamente normal (si no más común) popViewController(animated:)
sin capturar el valor de retorno.
Lee mas