我需要子类中的扩展属性,但是此代码无法编译。

protocol A {
}
protocol B: A {
}
protocol C: A {
}

class Base {
    var presenter: A?
}
class Left: Base {
    override var presenter: B?
}
class Right: Base {
    override var presenter: C?
}


如何在Swift 2上实现呢?

最佳答案

您不能快速覆盖或更改属性类型,但是强制转换可能会有所帮助。例如,在此代码中检查Left类:

protocol A {
}
protocol B: A {
}
protocol C: A {
}

class Base {
    var presenter: A?
}


class Left: Base {

    init(persenter : B?) {
        self.presenter = presenter
    }

    func test() {
        print(presenter as! B)
    }
}

class Right: Base {
    var presenter: C?  //WON'T COMPILE
}

关于swift - swift 。在子类中使用扩展属性类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39369971/

10-11 00:18