在 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 theSWIFT_VERSION
attribute set. Please contact the author or set theSWIFT_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 theSWIFT_VERSION
attribute set. Please contact the author or set theSWIFT_VERSION
attribute in at least one of the targets that integrate this pod.
pod 新库的时候,一直报错,项目也运行不起来,没在意终端这个错误,删掉重新pod也报这个错误,试了 很多次依然有问题,pod install 之后项目中一直就没有要添加的Socket.IO-Client-Swift 库,十分郁闷。
文件目录中却有:
找了半天,回来仔细看看错误,之前一直认为是 Socket.IO-Client-Swift
11.1.2 这个版本是老版本的问题,更新新的库了,还可能是跟项目现有的 swift 版本不匹配导致的。
直到昨天在新项目中 使用 Socket.IO-Client-Swift ,又遇到了 这个问题,又弄了半天,依然还是这样
pod 的时候指定版本号:
pod 'Socket.IO-Client-Swift','~>11.1.2'
这种方式依然解决不了问题,还是这样:
问题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
的原因,所以仔细查找一下就会发现,
之前这里一直没有设置,这个可以去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;
设置后然后重新 pod install 就 OK 了,这才是最终的解决方法,之前有小伙伴问我,我也是没有正确的解决,抱歉了,接触 Socket.IO-Client-Swift 时间也不算久,边用边学。
后续
今天按照之前的设置,添加的第三方库都设置了 SWIFT_VERSION
但是用 pod install 的 时候依然报错,实在是不能理解:
因为根本的问题愿意没找到,找了一番才发现当前项目没有设置SWIFT_VERSION
,在项目下搜索SWIFT_VERSION
没有这个,可以直接添加一个 SWIFT_VERSION
就OK 了,
这次应该是彻底 OK 了。
//:configuration = Debug
SWIFT_VERSION = 3.0
//:configuration = Release
SWIFT_VERSION = 3.0
//:completeSettings = some
SWIFT_VERSION
附
Socket.IO-Client-Swift Github 链接
https://github.com/socketio/socket.io-client-swift