"可选类型'(() - > Bool)?'不能用作布尔值;测试'!= nil'代替"在委托函数调用中

时间:2018-04-27 16:14:43

标签: swift function delegates boolean protocols

我的目标是在不同的类中返回函数的bool值。错误是声称该功能是可选的,但我不明白它是如何选择的。我甚至试图强制打开它,但它给了我错误"'() - >布尔'不能转换为Bool'"。

我在类声明上面的ManageCaptureVC文件中有我的协议:

protocol ManageCaptureVCDelegate: class {
    func selectedInterfaceOrientationIsLandscape() -> Bool
}

我在ManageCapture类中定义的委托:

weak var delegate: ManageCaptureVCDelegate?

我的if语句试图检查bool值:

if self.delegate?.selectedInterfaceOrientationIsLandscape {
/*code*/
}

委托类中的原始函数是:

func selectedInterfaceOrientationIsLandscape() -> Bool {

    if(selectedInterfaceOrientation == interfaceOrientations.landscapeLeft ||
        selectedInterfaceOrientation == interfaceOrientations.landscapeRight){
        return true
    }

    return false

}

1 个答案:

答案 0 :(得分:2)

您需要调用该函数,而不是引用该函数。

变化:

if self.delegate?.selectedInterfaceOrientationIsLandscape  {

为:

if self.delegate?.selectedInterfaceOrientationIsLandscape()  {

但是由于你使用的是可选链接,它应该是:

if self.delegate?.selectedInterfaceOrientationIsLandscape() ?? false {