Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在Swift协议中实现默认初始化吗_Swift_Swift4_Dry - Fatal编程技术网

我可以在Swift协议中实现默认初始化吗

我可以在Swift协议中实现默认初始化吗,swift,swift4,dry,Swift,Swift4,Dry,我有各种各样的类,它们都符合一个协议并共享相同的初始化方法。有没有办法在协议中实现初始化?所以我不必在每个类中复制代码。这就是我目前所拥有的 protocol someProtocol { init(data: Data) } class ObjectA: someProtocol { let data: Data required init(data: Data) { self.data = data } } class ObjectB: s

我有各种各样的类,它们都符合一个协议并共享相同的初始化方法。有没有办法在协议中实现初始化?所以我不必在每个类中复制代码。这就是我目前所拥有的

protocol someProtocol {
    init(data: Data)
}

class ObjectA: someProtocol {
    let data: Data
    required init(data: Data) {
        self.data = data
    }
}

class ObjectB: someProtocol {
    let data: Data
    required init(data: Data) {
        self.data = data
    }
}

您不能这样做,因为协议和协议扩展不知道符合它们的对象中的属性,因此无法初始化所有故事属性


我确信关于类型推断还有其他运行时原因,但这一个可能是最简单的解释。

所以我想对于我的案例来说,拥有一个基类是一种方式?这取决于您的用例。如果您的每个类都有相同的数据,那么为什么不只拥有一个类呢?我不能说基类是否是一条可行的道路,因为我对您试图实现的目标一无所知。我觉得您试图使用协议的原因是错误的。试着问一个关于你试图解决的问题。我相信会有人(包括我)愿意提供帮助。