Пробую использовать else if, но уже второй раз он ничего не обрабатывает. При том, если вынести else if в обычный if, то все работает. Значение не менятся. В чем проблема?
Скрины
Странное поведение else if
Значит у вас сработало условие до этого.
Else if будет вызываться, если предыдущие условия не прошли. Иначе проверка условий прекращается.
лучше вставьте проблемный код, не нужно кидать млн строк кода, просто те, в которых у вас проблемы/вопросы.
не совсем понятно, здесь вы говорите, что предыдущие тоже не сработали, а в записи речь идет о том, что не срабатывает только последнее. Это каскадное условие и если не сработало последнее, то скорее всего, как уже вам ответили, сработало одно из предыдущих.
Рискну также предположить, что по логике контента вам здесь нужно не каскадное условие, а три простых, одно из которых, последнее, у вас как раз и срабатывает в отдельном режиме.
Нужно, чтобы с ключей удалилось одно с трех вариантов, которое будет первым срабатывать, тоесть как должен работать елсе иф
Но, когда добавляю третий вариант, именно весь иф не срабатыает и ни одно из значений, но когда убираю последнее, все нормально
Чего вы пытаетесь добиться?
— доказать, что swift не поддерживает множественное if else? – проверьте в playGround”e
— получить помощь по коду? – скиньте код (желательно весь в GitHub)
— выловить баг? – дебаггер в помощь
Используйте switch
и какой-нибудь флаг для отметки первого срабатывания.
Если нужна именно последовательная проверка условий, то почему просто if
в if
не вложить? Или guard
использовать.
Если я так сделаю, то следующий иф сработает только если сработает первый, а нужно чтобы с ключей удалилось одно с трех значений, которое идет первый.
Свитч не получится использовать, тк у меня проверяется разные переменные
Я уверен в том, что свифт поддерживает множественное else if и хочу узнать, почему при добавлении именнно проверки значение последней переменной у меня не работает весь if.
Чтобы вам помочь нужно скачать скриншоты кода, а возможно потом со скриншотов еще перепечатать его себе, чтобы поэкспериментировать. Так мало кто будет делать, чтобы помочь.
Вставьте сюда блок кода, и описание ошибки и будет намного проще.
А какое значение у вас лежит в affiliate[0]
на момент тестирования? Вы ставили breakpoints на 69, 72, 76 строки?
Со значением все нормально, если убрать последнюю проверку,то иф успешко выполнняется, при том, что значение не меняется
Брейкпоинты ничего недадут, у меня просто даже не начинает выполнятся иф. Добавил в конец else, он тоже ничего не делает
if affiliates[0].phone.isEmpty {
keys.remove("Что то удалить")
print("removed")
} else if affiliates[0].docexpert.isEmpty {
keys.remove("Что то удалить")
print("removed1")
} else if affiliates[0].infoanaliticyexpert.isEmpty {
keys.remove("Что то удалить")
print("removed2")
}
Если добавляю последний участок, весь елсе иф не срабатівает
else if affiliates[0].infoanaliticyexpert.isEmpty {
keys.remove("Что то удалить")
print("removed2")
}
Поставьте всё-таки один брейкпоинт после вашей конструкции if else
и пришлите скрин, где будет видно код, консоль и развернутую модель по нулевому индексу. Примерно так:
Тут не совсем понятно почему вы записываете именно так.
Тут ведь может случиться, что и affiliates[0].phone.isEmpty
будет true
и affiliates[0].docexpert.isEmpty
тоже true
, но if
сработает для первого из них. По аналогии и со следующим условием.
Обычно if
используется немного для другого, а эту всю красоту вам нужно записать в отдельных if else
не связанных между собой, если я все понял правильно.
Если вы хотите просто понять как это работает, то можно придумать более простой пример, если так, то можем с этим помочь.