我有以下代码:
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
}
答案 0 :(得分:1)
您无法将非可选值与nil进行比较,因为它永远不会为零。并且您不应使用UIButton.alloc()
初始化按钮,只需使用UIButton()
即可。如果您的逻辑依赖于在初始化app delegate子类后等待重新定义此按钮,则应该选择UIButton?
。然后你可以将它与nil进行比较。