当前位置: 首页 > 知识库问答 >
问题:

二进制运算符 '===' 不能应用于任何类型的操作数?和UIBarButtonItem!

薛宏壮
2023-03-14

以下代码过去可以在swift 2.2中编译,现在不再在swift 3.0中编译。我们如何解决这个问题?

错误:二进制运算符“====”不能应用于“Any”类型的操作数还有“UIBarbuttonite!”

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

共有2个答案

邓光耀
2023-03-14

在比较之前,请尝试使用带条件强制转换的可选绑定来建立项的类型:

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 {
        // ...
    }
}
有权
2023-03-14

正如错误消息所说。在Swift 3中,OBJECITV-C id作为任何代码导入,如果没有显式转换,则无法调用任何代码的任何操作,包括代码。

试试这个:

if sender as AnyObject? === saveButton {

(对于其他发送方,所有操作都相同。)

请记住,在Swift 3中,由于任何对象都已成为最危险的操作之一,因此在其他情况下,您不应将其作为任何对象使用。

 类似资料: