类型“ SwinjectStoryboardOption”不符合协议“ ServiceKeyOption”

时间:2019-11-27 19:00:12

标签: swift xcode swinject

在我完成了项目Cocoapods的全新安装后,该项目在全新安装之前就可以使用了,现在当我编译该错误时:

Type 'SwinjectStoryboardOption' does not conform to protocol 'ServiceKeyOption'

我该如何解决?

3 个答案:

答案 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