在我完成了项目Cocoapods的全新安装后,该项目在全新安装之前就可以使用了,现在当我编译该错误时:
Type 'SwinjectStoryboardOption' does not conform to protocol 'ServiceKeyOption'
我该如何解决?
答案 0 :(得分:1)
该错误是由于将Swinject移至Swift 5(作为其2.7.0版本)而引起的。在撰写本文时,针对它的修复程序已经合并到SwinjectStoryboard主分支中。缺少的只是发布了一个新版本。
因此,除了使用Swinject 2.6之外,还有其他临时解决方法(直到正式发布)-通过在Podfile中定义来获取master分支内容
pod 'SwinjectStoryboard' , :git => 'https://github.com/Swinject/SwinjectStoryboard.git', :branch => 'master'
有一个ticket专用于此。
答案 1 :(得分:0)
TL; DR
相当干净的解决方法是转到Podfile.lock
并查找Swinject
,将其版本设置为2.6.0
而不是2.7.x
。看起来像这样:
- Swinject (2.6.0)
SwinjectStoryboard
发布修补程序后,您只需更新SwinjectStoryboard
,它就会自动将Swinject
更新到适当的版本。
问题
SwinjectStoryboard的podspec文件中的依赖项描述似乎错误:
s.dependency 'Swinject', '~> 2.6'
这导致cocoapods
选择了高于2.x
的任何2.6
版本。因此,它错误地选择了与当前版本2.7.x
不兼容的SwinjectStoryboard
。
顺便说一句,修复程序似乎已经在进行中,它在master分支上,但尚未标记版本。
答案 2 :(得分:0)
另一种解决方案是添加
func hash(into: inout Hasher) {
}
到internal struct SwinjectStoryboardOption: ServiceKeyOption {<here>}
。
文件的路径应为Pods -> SwinjectStoryboard -> SwinjectStoryboardOption.swift