如何调用可选的协议方法?

时间:2015-08-19 16:42:25

标签: swift

我有一个符合我自己的协议的类,它有可选的方法。对该类对象的引用也是可选的。换句话说,对象可以存在,并且可以已经实现了所讨论的方法。但我怎么称呼它? 我有这样的代码:

if let theDelegate = delegate {
    if let result = theDelegate.delegateMethod() {
    }
}

但Xcode抱怨“可选类型的值'(() - >())?'没有打开“。它希望我将示例中第2行的后半部分更改为“theDelegate.delegateMethod!()”,但是强制展开会破坏我想要做的目的。我怎么称呼这种方法?请注意,我的方法没有参数或返回值。

1 个答案:

答案 0 :(得分:5)

根据documentation,应该像这样调用可选方法:

if let theDelegate = delegate {
    if let result = theDelegate.delegateMethod?() {
    }else {
        // delegateMethod not implemented
    }
}
  

可选属性要求和返回值的可选方法要求在访问或调用时将始终返回相应类型的可选值,以反映可选要求可能尚未实现的事实。