我正在试图找出如何在实现类型可以继承的协议扩展中创建默认协议初始化器实现。
看起来是这样的:
protocol Initializable {
associatedtype EntityType: ConcreteClass
var container: Container<EntityType> { get set }
init()
}
class Container<T: ConcreteClass> {
typealias EntityType = T
let configuration : Configuration
init(config: Configuration) {
configuration = config
}
func getAll() -> [EntityType] {
return [EntityType()]
}
}
extension Initializable {
init(config: Configuration) {
self.init()
self.container = Container<EntityType>(config: config)
}
}
final class Repo: Initializable {
typealias EntityType = String
var container: Container<String>
}最后出现以下编译器错误:
类型'Repo‘不符合协议’初始化‘。候选人有非匹配类型‘init(类型: EntityType.Type)’
发布于 2017-10-06 08:42:42
在协议和扩展中使用不同的init。
init(type: EntityType)必须在扩展或类中实现方法init()
https://stackoverflow.com/questions/46601553
复制相似问题