The following code used to be able to compile in swift 2.2, no longer in swift 3.0. How do we fix this?
Error: Binary operator \'===\' cannot be appl
Try using optional binding with conditional cast to establish the type of the item before comparing:
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 {
// ...
}
}
As the error message is saying. In Swift 3, Objecitve-C id
is imported as Any
, and you cannot call any operations for Any
including ===
, without explicit cast.
Try this:
if sender as AnyObject? === saveButton {
(All the same for other sender
comparison.)
And remember, in Swift 3, as AnyObject
has become one of the most risky operations, you should not use as AnyObject
in other cases.