Xcode 9 beta 3 - Swift 3.2: сравнение необязательно

Проект, который отлично компилируется в Xcode 8.3.2, показывает много ошибок компиляции при сравнении необязательного/необязательного значения с ==

Я нашел более старое предложение по удалению сравнения ‹> для одного и того же: operator.md" rel="nofollow noreferrer">https://github.com/apple/swift-evolution/blob/master/proposals/0121-remove-Optional-comparison-operators.md

Итак, теперь в Xcode 9 я даже не могу сравнить две опции:

    let xxx: String? =  "A"
    let yyy: String? = "B"

    if xxx == yyy { //ERROR: Ambiguous use of operator '=='

    }

Может ли кто-нибудь указать мне ресурс, где это будет объяснено? Или это просто временный баг?

Спасибо


person ds77    schedule 20.07.2017    source источник
comment
Он отлично работает с Swift 4 и Swift 3.2.   -  person Fares Benhamouda    schedule 20.07.2017


Ответы (1)


Используя бета-версию XCode 9 (9M136h) и Swift 4, ваша инструкция компилируется.

Варианты == и !=, которые принимают необязательные операнды, по-прежнему полезны, и их результаты неудивительны, поэтому они останутся.

Удалите версии ‹, ‹=, > и >=, которые принимают необязательные операнды.

Таким образом, ваша инструкция должна работать либо в Swift 3.2, либо в Swift 4. Проверьте версию Swift, которую вы используете, в настройках сборки -> Языковая версия Swift.

person Fares Benhamouda    schedule 20.07.2017
comment
Извините, моя вина. Был скрытый оператор переопределения расширения == для некоторых типов объектов. Дело в том, что Xcode 8 скомпилировал код нормально, а Xcode 9 Swift 3.2 запутался. - person ds77; 26.07.2017