Является ли Xcode9 обратной совместимостью со Swift 3 (или 3.1)?

Я только начал использовать 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)
    }))
}

Я собираюсь:

Параметр замыкания кортежа '(ключ: _, значение: _)' не поддерживает деструктурирование

Оба они не вызвали проблем с Xcode 8.3/Swift 3.1.

Я использую Xcode9, не выбрав вариант обновления до Swift 4. Существует несколько возможностей:

  1. Есть некоторые флаги, которые необходимо установить, чтобы сохранить обратную совместимость Swift 3.1.
  2. Xcode9 находится в стадии бета-тестирования и еще не полностью готов
  3. Xcode9 не будет полностью обратно совместим со Swift 3.1.

Мысли?


person Chris Prince    schedule 04.07.2017    source источник
comment
Сравните stackoverflow.com/q/44389591/2976878   -  person Hamish    schedule 05.07.2017


Ответы (2)


Xcode 9 совместим со Swift 3 и 4. Однако вам необходимо использовать Swift 3.2, что является минимумом для Xcode 9.

person pesch    schedule 06.07.2017
comment
Итак, Xcode9 will not be completely backwards compatible to Swift 3.1 выглядит так. Поскольку AFAIK, Swift 3.2 вышел с Xcode 9. - person Chris Prince; 07.07.2017

Вы можете найти список языков, поддерживаемых определенным Xcode, из Build Settings вашего проекта Xcode.

Вот образец ссылки, как вы можете это увидеть:

(Для Xcode 9 он поддерживает Swift 3.2 и Swift 4.0)

введите здесь описание изображения

Вот справочный ответ, как вы можете легко переключиться с Swift 3.0 на 4.0.

person Krunal    schedule 13.04.2018