Двоичный оператор не может быть применен к операндам типа Int и String - Swift 2.3 -> ошибка преобразования Swift 3.2

При преобразовании из Swift 2.3 в 3.2 я получил ошибку ниже.

Ошибка: бинарный оператор нельзя применить к операндам типа Int и String.

для этого, если условие, т.е. if (error?.code)! == "-112", которое показано в строке ниже.

if (error?.code)! == "-112" 
{
     print("hello")
}

person A.R    schedule 14.06.2018    source источник
comment
преобразуйте (error?.code)! в String --› String((error?.code)!) и проверьте   -  person Anbu.Karthik    schedule 14.06.2018
comment
if (error?.code)! == -112 тоже должен работать :)   -  person Sandeep Bhandari    schedule 14.06.2018
comment
Спасибо @Anbu.karthik. да работает спасибо   -  person A.R    schedule 14.06.2018


Ответы (3)


Сама ошибка говорит, что это разные типы Int и String.

Вам может понадобиться привести тот или иной тип в одну и ту же форму и сравнить их.

if (String(error?.code)!) == "-112"){
  print("hello")
} 
person rohitanand    schedule 14.06.2018

Swift — это язык с сильной системой типов. Вы можете сравнивать только значения одного типа.

Поскольку левая сторона равна Int, в любом случае используйте значение Int для правой стороны. Создание строки неоправданно дорого. Не делай этого.

Наиболее эффективным (и безопасным) решением является

if error?.code == -112 
{
     print("hello")
}
person vadian    schedule 14.06.2018

Вам нужно ввести результат кода ошибки в строку, например:

if String(error?.code)!) == "-112" {
print("Hello")
}

По сути, вы принимаете код ошибки?

Кроме того, если вы работаете с ответом API, вы должны учитывать все другие коды ошибок в операторе else/if, чтобы убедиться, что все ответы обрабатываются правильно (на всякий случай).

person jcdr04    schedule 14.06.2018