Xcode9向后兼容Swift 3(或3.1)吗?

Xcode9向后兼容Swift 3(或3.1)吗?,swift,xcode,swift4,xcode9,xcode9-beta,Swift,Xcode,Swift4,Xcode9,Xcode9 Beta,我刚刚开始使用Xcode9(beta2)。我的理解是,这不会迫使我立即更改代码。但是,我使用的库(Gloss)出现了构建错误: 1) 对于以下代码: public func valueForKeyPath(keyPath: String, withDelimiter delimiter: String = GlossKeyPathDelimiter, logger: Logger = GlossLogger()) -> Any? { 我得到: 初始值设定项“init()”是内部的,无法从

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

1) 对于以下代码:

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

初始值设定项“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)
    }))
}
internal func flatMap(u-transform:(Key,Value)抛出->(KeyPrime,ValuePrime)?)返回->[KeyPrime:ValuePrime]{
返回字典(元素:在
返回try转换(键、值)
}))
}
我得到:

闭包元组参数“(键:\值:\)”不支持 解构

这两种方法都不会导致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项目的
    构建设置
    中找到特定Xcode支持的语言列表

    以下是示例参考,您可以如何查看它:

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

    以下是参考答案,您可以如何轻松地从Swift 3.0切换到4.0


    相比之下,
    Xcode9将无法完全向后兼容Swift 3.1。自AFAIK以来,Swift 3.2推出了Xcode 9。