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 applied to operands of type 'Any?' and 'UIBarButtonItem!'
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if sender === saveButton { // Error!
// ...
} else if sender === closeButton { // Error!
// ...
}
}
Try using optional binding with conditional cast to establish the type of the item before comparing:
As the error message is saying. In Swift 3, Objecitve-C
id
is imported asAny
, and you cannot call any operations forAny
including===
, without explicit cast.Try this:
(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 useas AnyObject
in other cases.