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

protocol ObjectProtocol {
    var endpoint: String
}

class Object {
    // All subclasses must implement ObjectProtocol

    func printAPIEndpoint() { print(endpoint) }
}


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

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


实现这样的最佳方法是什么?

最佳答案

具有默认方法实现的协议扩展
 可能是您要寻找的:

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()

关于swift - Swift 2:在抽象父类(super class)中指定所需的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35826333/

10-13 03:56