with tipo puede operandos operador aplicar swift swift3

swift - with - El operador binario ''==='' no se puede aplicar a operandos de tipo ''¿Cualquier?'' y ''UIBarButtonItem!''



swift 4 selector syntax (2)

El siguiente código solía ser capaz de compilar en swift 2.2, ya no en swift 3.0. ¿Cómo arreglamos esto?

Error: el operador binario ''==='' no se puede aplicar a los operandos de tipo ''¿Cualquier?'' y ''UIBarButtonItem!''

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if sender === saveButton { // Error! // ... } else if sender === closeButton { // Error! // ... } }


Como dice el mensaje de error. En Swift 3, el Id. De Objecitve-C se importa como Any , y no puede llamar a ninguna operación para Any incluyendo === , sin === explícita.

Prueba esto:

if sender as AnyObject? === saveButton {

(Todo lo mismo para la comparación de otro sender .)

Y recuerde, en Swift 3, as AnyObject ha convertido en una de las operaciones más riesgosas, no debe usar as AnyObject en otros casos.


Intente utilizar el enlace opcional con conversión condicional para establecer el tipo de elemento antes de comparar:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let sender = sender as? UIBarButtonItem, sender === saveButton { // ... } else if let sender = sender as? UIBarButtonItem, sender === closeButton { // ... } }