Я только начал использовать 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. Существует несколько возможностей:
- Есть некоторые флаги, которые необходимо установить, чтобы сохранить обратную совместимость Swift 3.1.
- Xcode9 находится в стадии бета-тестирования и еще не полностью готов
- Xcode9 не будет полностью обратно совместим со Swift 3.1.
Мысли?