在Swift iOS中为协议分配代理时出现编译器错误

时间:2014-07-23 00:13:54

标签: ios delegates swift protocols

我在为一个对象分配委托时遇到问题,该对象是一个在Swift中定义协议的类的实例,如下所示:

我简化了代码以简化问题: 这是具有协议的类

protocol TheProtocol {
    func notifyDelegate()
}
class ClassWithProtocol: NSObject {   
    var delegate: TheProtocol?
    fire() {
        delegate?.notifyDelegate()
    }
}

这是符合协议的类

    class ClassConformingToProtocol: NSObject, TheProtocol {
        var object: ClassWithProtocol?
        func notifyDelegate() {
            println("OK")
        }
        init() {
            object = ClassWithProtocol()
            object?.delegate = self  // Compiler error - Cannot assign to the result of this expression 
            object?.fire()
        }
    }

我尝试了各种替代方案来分配代表但没有成功。知道我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

发行说明的已知问题部分说:

  

您无法有条件地分配给可选对象的属性。   (16922562)

     

例如,不支持此功能:

let window: NSWindow? = NSApplication.sharedApplication.mainWindow
window?.title = "Currently experiencing problems"

所以你应该做一些像if let realObject = object { ... }

这样的事情