0

在我对我的项目 Cocoapods 进行了全新安装之后,该项目在全新安装之前工作,现在当我编译时出现该错误:

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

我如何解决它?

4

3 回答 3

4

TL;博士

相当干净的解决方法是去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版本不兼容的。

顺便说一句,修复似乎正在进行中,它在主分支上,但尚未标记版本。

于 2019-11-27T19:00:12.547 回答
1

该错误是由于将 Swinject 作为 2.7.0 版本的一部分移动到 Swift 5 引起的。在写这篇文章的那一刻,它的修复已经合并到主 SwinjectStoryboard 分支中。缺少的只是发布一个新版本。

因此,除了回退到 Swinject 2.6 之外,还有其他临时解决方法(直到正式发布) - 通过在 Podfile 中定义来获取主分支内容

pod 'SwinjectStoryboard' , :git => 'https://github.com/Swinject/SwinjectStoryboard.git', :branch => 'master'

一张专门用于此的票。

于 2020-05-10T08:36:52.467 回答
0

另一个解决方案是添加

func hash(into: inout Hasher) {
    
}

internal struct SwinjectStoryboardOption: ServiceKeyOption {<here>}.

文件的路径应该是Pods -> SwinjectStoryboard -> SwinjectStoryboardOption.swift

于 2020-08-24T12:40:56.837 回答