"Необязательный тип '(() -> Bool)?' не может использоваться в качестве логического значения; вместо этого проверьте «! = nil» в вызове функции делегата - PullRequest
0 голосов
/ 27 апреля 2018

Моя цель - вернуть логическое значение функции в другом классе. Ошибка утверждает, что функция является необязательной, но я не понимаю, как она является необязательной. Я даже пытался принудительно развернуть его, но он выдает ошибку "'() -> 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 голосов
/ 27 апреля 2018

Вам нужно вызывать функцию, а не ссылаться на функцию.

Изменение:

if self.delegate?.selectedInterfaceOrientationIsLandscape  {

до:

if self.delegate?.selectedInterfaceOrientationIsLandscape()  {

Но поскольку вы используете необязательную цепочку, она должна быть:

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