将数据传递给swift内部扩展内部已经实现的委托方法

时间:2018-01-06 21:42:08

标签: ios swift delegates swift-extensions

我正在尝试将数据传递给在扩展中实现的委托方法但我无法执行此操作,因为扩展无法存储属性。如何完成它?

1 个答案:

答案 0 :(得分:1)

您可以使存储的属性成为委托协议的要求。

protocol MyProtocol {
    var aProperty: String { get set }
    func aProtocolMethod()
}

对于MyProtocol的相应扩展,可以直接访问该属性。

extension MyProtocol {
    func aProtocolMethod() {
        print("property:" + aProperty)
    }
}

在符合MyProtocol的类中,它应该实现变量来存储数据。

 class MyClass: MyProtocol {
    var aProperty: String

    init() {
        self.aProperty = "some value"
    }
}

let myClass = MyClass()
myClass.aProtocolMethod()