我想开发一个使用核心数据和领域的存储库模式的应用程序。我想根据我的需要解决协议。目的是在程序集中注入一个通用的核心数据存储库/领域存储库协议。
这条线出现问题说Protocol 'SleepRepositoryProtocol' can only be used as a generic constraint because it has Self or associated type requirements
func assemble(container: Container) {
container.register(SleepRepositoryProtocol.self) { r in
CoreDataSleepRepository(persistentContainer:r.resolve(NSPersistentContainer.self)!)
}.inObjectScope(.container)
}
由于使用通用(关联类型)属性,我无法注入睡眠存储库协议。我怎么解决这个问题?
另外,非常感谢您的回复。它真的帮了我很多。我对此还有一个问题。
var 存储库:SleepRepositoryProtocol
var items: [SleepEntity]?
private let assembler: Assembler
init(assembler: Assembler) {
self.assembler = assembler
repository = assembler.resolver.resolve(SleepRepositoryProtocol.self)!
}
这给了我错误“协议 'SleepRepositoryProtocol' 只能用作通用约束,因为它具有 Self 或关联的类型要求”,我不知道如何解决我的 SleepRepositoryProtocol。