Xcode9 是否向后兼容 Swift 3(或 3.1)?
Is Xcode9 backwards compatible to Swift 3 (or 3.1)?
我刚刚开始使用 Xcode9 (beta2)。我的理解是它不会强迫我立即更改我的代码。但是,我在使用 (Gloss) 的库时遇到构建错误:
1) 对于以下代码:
public func valueForKeyPath(keyPath: String, withDelimiter delimiter: String = GlossKeyPathDelimiter, logger: Logger = GlossLogger()) -> Any? {
我得到:
Initializer 'init()' is internal and cannot be referenced from a
default argument value
2) 对于此代码:
internal func flatMap<KeyPrime : Hashable, ValuePrime>(_ transform: (Key, Value) throws -> (KeyPrime, ValuePrime)?) rethrows -> [KeyPrime : ValuePrime] {
return Dictionary<KeyPrime,ValuePrime>(elements: try flatMap({ (key, value) in
return try transform(key, value)
}))
}
我得到:
Closure tuple parameter '(key: _, value: _)' does not support
destructuring
这两个都不会导致 Xcode 8.3/Swift 3.1.
出现问题
我正在使用 Xcode9 而没有选择更新到 Swift 的选项 4. 似乎有几种可能性:
- 需要设置一些标志以保持 Swift 3.1 向后兼容性
- Xcode9 处于测试阶段,尚未完全准备好
- Xcode9 不会完全向后兼容 Swift 3.1
想法?
Xcode 9 与 Swift 3 和 4 交叉兼容。但是,您需要使用 Swift 3.2,这是 Xcode 9 的最低要求。
您可以从 Xcode 项目的 Build Settings
中找到特定 Xcode 支持的语言列表。
这是示例参考,您如何查看它:
(对于Xcode 9,它支持,Swift 3.2和Swift 4.0)
这是参考答案,如何轻松地从 Swift 3.0 切换到 4.0
我刚刚开始使用 Xcode9 (beta2)。我的理解是它不会强迫我立即更改我的代码。但是,我在使用 (Gloss) 的库时遇到构建错误:
1) 对于以下代码:
public func valueForKeyPath(keyPath: String, withDelimiter delimiter: String = GlossKeyPathDelimiter, logger: Logger = GlossLogger()) -> Any? {
我得到:
Initializer 'init()' is internal and cannot be referenced from a default argument value
2) 对于此代码:
internal func flatMap<KeyPrime : Hashable, ValuePrime>(_ transform: (Key, Value) throws -> (KeyPrime, ValuePrime)?) rethrows -> [KeyPrime : ValuePrime] {
return Dictionary<KeyPrime,ValuePrime>(elements: try flatMap({ (key, value) in
return try transform(key, value)
}))
}
我得到:
Closure tuple parameter '(key: _, value: _)' does not support destructuring
这两个都不会导致 Xcode 8.3/Swift 3.1.
出现问题我正在使用 Xcode9 而没有选择更新到 Swift 的选项 4. 似乎有几种可能性:
- 需要设置一些标志以保持 Swift 3.1 向后兼容性
- Xcode9 处于测试阶段,尚未完全准备好
- Xcode9 不会完全向后兼容 Swift 3.1
想法?
Xcode 9 与 Swift 3 和 4 交叉兼容。但是,您需要使用 Swift 3.2,这是 Xcode 9 的最低要求。
您可以从 Xcode 项目的 Build Settings
中找到特定 Xcode 支持的语言列表。
这是示例参考,您如何查看它:
(对于Xcode 9,它支持,Swift 3.2和Swift 4.0)
这是参考答案,如何轻松地从 Swift 3.0 切换到 4.0