gpt4 book ai didi

Swift 4 协议(protocol)扩展 - 便利初始化器默认实现

转载 作者:行者123 更新时间:2023-11-28 06:11:01 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何在实现类型可以继承的协议(protocol)扩展中创建默认协议(protocol)初始化器实现。

看起来像这样:

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>
}

我最终遇到以下编译器错误:

Type 'Repo' does not conform to protocol 'Initializable'. Candidate has non-matching type 'init(type: EntityType.Type)'

最佳答案

您在协议(protocol)和扩展中使用了不同的 init。

init(type: EntityType)

您必须在扩展或类中实现方法 init()

关于Swift 4 协议(protocol)扩展 - 便利初始化器默认实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46601553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com