Swift 2:在抽象超类中指定所需的变量

时间:2016-03-06 11:30:05

标签: swift

我正在尝试写一个类和协议的东西。我只想要一种带有明确定义函数的协议或。

protocol ObjectProtocol {
    var endpoint: String
}

class Object {
    // All subclasses must implement ObjectProtocol

    func printAPIEndpoint() { print(endpoint) }
}

这样我就可以轻松定义这样的类:

class User: Object, ObjectProtocol {
    var endpoint = "localhost:3000"
}

实现这样的目标的最佳途径是什么?

1 个答案:

答案 0 :(得分:0)

具有默认方法实现的协议扩展  可能就是你要找的东西:

protocol ObjectProtocol {
    var endpoint: String { get }
}

extension ObjectProtocol {
    func printAPIEndpoint() { print(endpoint) }
}

这为所有人定义了默认方法printAPIEndpoint() 符合ObjectProtocol的类型,比较 "提供默认实施"在Swift参考中的"Protocols"中。

使用示例:

class User: ObjectProtocol {
    var endpoint = "localhost:3000"
}

let user = User()
user.printAPIEndpoint()