我在为一个对象分配委托时遇到问题,该对象是一个在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()
}
}
我尝试了各种替代方案来分配代表但没有成功。知道我错过了什么吗?
答案 0 :(得分:2)
发行说明的已知问题部分说:
您无法有条件地分配给可选对象的属性。 (16922562)
例如,不支持此功能:
let window: NSWindow? = NSApplication.sharedApplication.mainWindow window?.title = "Currently experiencing problems"
所以你应该做一些像if let realObject = object { ... }