Swift3 的 Cocoapods 1.1.0 beta

Posted

技术标签:

【中文标题】Swift3 的 Cocoapods 1.1.0 beta【英文标题】:Cocoapods 1.1.0 beta for Swift3 【发布时间】:2016-09-14 21:21:45 【问题描述】:

使用 Swift3 升级到 Xcode8 后,我发现 Cocoapods 不再支持这个了。所以我将 Cocoapods 升级到 beta 版本,即 1.1.0rc2。但是当我尝试 pod spec lint 时,发生了错误:

- ERROR | xcodebuild:  WeatherKit/WeatherKit/DateComponents+InitFromString.swift:11:11: error: use of undeclared type 'DateComponents'
- ERROR | [ios] xcodebuild:  WeatherKit/WeatherKit/CityLoader.swift:14:13: error: use of undeclared type 'DispatchQueue'
- ERROR | [iOS] xcodebuild:  WeatherKit/WeatherKit/CityLoader.swift:19:11: error: use of unresolved identifier 'DispatchQueue'
- WARN  | [iOS] xcodebuild:  WeatherKit/WeatherKit/DirectionUnit.swift:20:15: warning: extraneous '_' in parameter: 'value' has no keyword argument name
- WARN  | [iOS] xcodebuild:  WeatherKit/WeatherKit/DistanceUnit.swift:19:15: warning: extraneous '_' in parameter: 'value' has no keyword argument name

Analyzed 1 podspec.

[!] The spec did not pass validation, due to 20 errors and 2 warnings.

这 20 个错误都是关于 Swift3 语法的。但我使用的是 Xcode8,它应该允许所有这些语法

有人知道我可以用这个做什么吗?

【问题讨论】:

【参考方案1】:

我会尝试回到旧版本并将 podFile 保留为 iOS 9 而不是 iOS 10。我假设此错误是 CocoaPods 测试版中的错误。

【讨论】:

但是当我回滚时,会显示“- ERROR | [iOS] unknown: Encountered an unknown error (Simulator iPhone 4s is not available.) during validation.” 我不认为 iPhone 4S 是 Xcode 8 sim 中的一个选项(或者它不应该是)。尝试使用 iPhone SE。 但它不适用于 Cocoapods。试过把模拟器换成iPhone5,还是不行。不过已经解决了,看我上面的回答【参考方案2】:

我用1.1.0rc2版本解决了这个问题。

问题是因为s​​wift编译版本不对,默认是2.3,但是代码是3.0。

所以修改validator.rb:

# @return [String] the SWIFT_VERSION to use for validation.
#
def swift_version
  @swift_version ||= dot_swift_version || '2.3'
end

# @return [String] the SWIFT_VERSION to use for validation.
#
def swift_version
  @swift_version ||= dot_swift_version || '3.0'
end

问题解决了

【讨论】:

以上是关于Swift3 的 Cocoapods 1.1.0 beta的主要内容,如果未能解决你的问题,请参考以下文章

Cocoapods - 使用 Swift 3.0 编译的模块无法在 Swift 3.0.1 中导入

填坑系列之更新CocoaPods

声明枚举路由器 Alamofire swift 3.0

无法在现有 Xcode 项目中安装 cocoaPods

XCGLogger 版本 4.0.0 和 CocoaPods 错误

PromiseKit O-C 指南