3

我刚刚开始使用 Xcode9 (beta2)。我的理解是它不会强迫我立即更改我的代码。但是,我正在使用我正在使用的库(Gloss)出现构建错误:

1)对于以下代码:

public func valueForKeyPath(keyPath: String, withDelimiter delimiter: String = GlossKeyPathDelimiter, logger: Logger = GlossLogger()) -> Any? {

我得到:

Initializer 'init()' 是内部的,不能从默认参数值中引用

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)
    }))
}

我越来越:

闭包元组参数 '(key: _, value: _)' 不支持解构

这两者都没有对 Xcode 8.3/Swift 3.1 造成任何问题。

我正在使用 Xcode9,但没有选择更新到 Swift 4 的选项。似乎有几种可能性:

  1. 需要设置一些标志以保持 Swift 3.1 向后兼容性
  2. Xcode9 处于测试阶段,还没有完全准备好
  3. Xcode9 不会完全向后兼容 Swift 3.1

想法?

4

2 回答 2

1

Xcode 9 与 Swift 3 和 4 交叉兼容。但是,您需要使用 Swift 3.2,这是 Xcode 9 的最低要求。

于 2017-07-06T06:08:54.960 回答
0

Build Settings您可以从您的 Xcode 项目中找到特定 Xcode 支持的语言列表。

这是示例参考,您如何查看它:

(对于 Xcode 9,它支持 Swift 3.2 和 Swift 4.0)

在此处输入图像描述

这是参考答案,如何轻松从 Swift 3.0 切换到 4.0

于 2018-04-13T03:58:21.683 回答