找不到'=='的重载

时间:2015-06-07 05:01:26

标签: ios swift compiler-errors operator-overloading

我有以下代码:

            var settingButton:UIButton
            settingButton = appDelegate.myFunctionReturningButton()

            if (settingButton == nil) {println("WE ARE IN BAD SHAPE!!!!")}

它部分有效,但并非总是如此。为了看看如果我没有得到myFunctionReturningButton()的预期会发生什么,我添加了最后一行。 但这是问题和我的问题:

我从Swift编译器收到此错误消息:

Could not find an overload for '==' that accepts the supplied arguments

浏览网络,我有点理解这意味着什么,但我该怎么办呢? 我该怎么写最后一行?

精确度: 我在AppDelegate.swift中有以下两个函数,并且在AppDelegate类的顶部使用此行声明了appSettingButton。

var appSettingButton: UIButton = UIButton.alloc()


func registerSettingButton (button:UIButton) {
    appSettingButton = button
}


func myFunctionReturningButton() -> UIButton {
    return appSettingButton
}

1 个答案:

答案 0 :(得分:1)

您无法将非可选值与nil进行比较,因为它永远不会为零。并且您不应使用UIButton.alloc()初始化按钮,只需使用UIButton()即可。如果您的逻辑依赖于在初始化app delegate子类后等待重新定义此按钮,则应该选择UIButton?。然后你可以将它与nil进行比较。