Unable to determine Swift version for the following pods:

在 OC 项目中使用 Socket.IO-Client-Swift 时,更新或安装 pod 时可能会遇到的这个问题:

socket.io-client-swift Github 地址

socket.io-client-swift

报错信息

[!] Unable to determine Swift version for the following pods:

  • Socket.IO-Client-Swift does not specify a Swift version and none of the targets (GantangBusDriver) integrating it have the SWIFT_VERSION attribute set. Please contact the author or set the SWIFT_VERSION attribute in at least one of the targets that integrate this pod.\n- StarscreamSocketIO does not specify a Swift version and none of the targets (GantangBusDriver) integrating it have the SWIFT_VERSION attribute set. Please contact the author or set the SWIFT_VERSION attribute in at least one of the targets that integrate this pod.
image.png

pod 新库的时候,一直报错,项目也运行不起来,没在意终端这个错误,删掉重新pod也报这个错误,试了 很多次依然有问题,pod install 之后项目中一直就没有要添加的Socket.IO-Client-Swift 库,十分郁闷。

文件目录中却有:


image.png

找了半天,回来仔细看看错误,之前一直认为是 Socket.IO-Client-Swift 11.1.2 这个版本是老版本的问题,更新新的库了,还可能是跟项目现有的 swift 版本不匹配导致的。

直到昨天在新项目中 使用 Socket.IO-Client-Swift ,又遇到了 这个问题,又弄了半天,依然还是这样

pod 的时候指定版本号:

pod 'Socket.IO-Client-Swift','~>11.1.2'

image.png

这种方式依然解决不了问题,还是这样:


image.png

问题2

上面这个问题,主要是因为本地的 SWIFT_VERSION 与 socket.io-client-swift 库中的
SWIFT_VERSION 版本可能不一致,
如果指定版本还是有这个问题,就选中 socket.io-client-swift 相关的提交文件,还原为提交之前的状态,运行 OK,期初就是试了很多方法之后都无效,就用的这种方式解决的。

这种方法只适用于本地之前是 OK 的解决方法,如果是期初导入报错或者在其他终端就不能使用这种方法解决了。

正确彻底的解决方法

通过昨天在新项目中 使用 Socket.IO-Client-Swift ,又遇到了 这个问题,重新来查找根本的原因,期初都没有太在意 pod 的报错信息,或者是没找到正确修改的地方,给忽略了,目前我就是这样,重新审视下报错信息就会发现:
Please contact the author or set the SWIFT_VERSION attribute in at least one of the targets that integrate this pod
Socket.IO-Client-Swift does not specify a Swift version and none of the targets (iOSVehicle) integrating it have the SWIFT_VERSION attribute set.`

就是 SWIFT_VERSION 的原因,所以仔细查找一下就会发现,

image.png

之前这里一直没有设置,这个可以去GitHub 查看一下使用的是 Swift 那个版本,就设置那个版本。

https://github.com/socketio/socket.io-client-swift/releases?after=v13.1.0

我用的 11.1.2 的 老版本, 从 12.0.0 开始支持的 swift 4.o , 所以设置 3.o;

image.png
image.png

设置后然后重新 pod install 就 OK 了,这才是最终的解决方法,之前有小伙伴问我,我也是没有正确的解决,抱歉了,接触 Socket.IO-Client-Swift 时间也不算久,边用边学。

image.png

后续

今天按照之前的设置,添加的第三方库都设置了 SWIFT_VERSION 但是用 pod install 的 时候依然报错,实在是不能理解:

image.png

因为根本的问题愿意没找到,找了一番才发现当前项目没有设置SWIFT_VERSION,在项目下搜索SWIFT_VERSION没有这个,可以直接添加一个 SWIFT_VERSION 就OK 了,

image.png

image.png

这次应该是彻底 OK 了。

//:configuration = Debug
SWIFT_VERSION = 3.0

//:configuration = Release
SWIFT_VERSION = 3.0

//:completeSettings = some
SWIFT_VERSION
image.png

Socket.IO-Client-Swift Github 链接
https://github.com/socketio/socket.io-client-swift

推荐阅读更多精彩内容