Проблема с развертыванием swift 4.2 с (??)

есть странная проблема с Swift 4.2 и разворачивать с помощью ??

простой код:

var someVar:String?

override func viewDidLoad() {
   someOp = "print some string"

    subTitleLabel.text = "text one" + someVar ?? "unwrapped"
}

компилятор выдает ошибку:

Value of optional type 'String?' must be unwrapped to a value of type 'String'

что изменилось в Swift 4.2?

1. ?? не разворачивает значение, он устанавливает его по умолчанию, если оно равно нулю. 2. Используйте круглые скобки

Desdenova 31.10.2018 14:03

Да, это условный оператор, своего рода сокращенная версия if ... else

sandpat 31.10.2018 14:05

это должна быть работа, которую вы просто напишите, возьмите другие значения и такие же развернутые var other = someVar ?? "развернутый", чем использовать subTitleLabel.text = "text one" + other

Krishna kushwaha 31.10.2018 14:23
0
3
1 286
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это из-за приоритет оператора.

Приоритет + выше, чем ??, поэтому вам необходимо добавить скобки.

subTitleLabel.text = "text one" + (someVar ?? "unwrapped")

Думаю, вы ищете слово БОДМЫ.

Rakesha Shastri 31.10.2018 14:10

@RakeshaShastri Да, никогда об этом не слышал. 😉

vadian 31.10.2018 14:12

Так нас учили математике в начальной школе здесь, в Индии. : D

Rakesha Shastri 31.10.2018 14:13

@RakeshaShastri Для ясности, БОДМЫ означает: Brackets - Оrders (индикаторы и т. д.) - Division - Multiplication - Аdition - Subtraction. Помните - divsion & multiplication имеют такой же "уровень" приоритета, как и addition & subtraction.

George 31.10.2018 20:39

Другие вопросы по теме