首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >二元运算符“===”不能应用于类型为“Any?”的操作数和“UIBarButtonItem!”

二元运算符“===”不能应用于类型为“Any?”的操作数和“UIBarButtonItem!”
EN

Stack Overflow用户
提问于 2016-09-18 05:31:05
回答 2查看 31.1K关注 0票数 27

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

错误:二元运算符'===‘不能应用于类型为'Any?’的操作数和“UIBarButtonItem!”

代码语言:javascript
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if sender === saveButton { // Error!
        // ... 
    } else if sender === closeButton { // Error!
        // ...
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-18 05:42:03

正如错误消息所说的那样。在Swift 3中,Objecitve-C id被导入为Any,如果没有显式强制转换,您将无法调用包括===在内的任何Any操作。

试试这个:

代码语言:javascript
复制
if sender as AnyObject? === saveButton {

(对于其他sender比较都是一样的。)

请记住,在Swift 3中,as AnyObject已成为风险最高的操作之一,您不应在其他情况下使用as AnyObject

票数 49
EN

Stack Overflow用户

发布于 2016-09-18 05:45:39

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

代码语言:javascript
复制
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 {
        // ...
    }
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39551937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档