Обычно оператор switch-case работает следующим образом: если условие точно соответствует значению, то выполняется соответствующий блок кода. Но в моем случае что-то пошло не так! Почему у меня работает код для «обновления», а условие «дата»!? Я пытался воссоздать ситуацию на детской площадке - там все работает правильно. В чем проблема?
Почему блок update
работает, когда key = "date"
? Теоретически, блок default
должен работать!?
Мой код:
print("Dictionary = \(dictionary)")
for (key, value) in dictionary {
switch key {
case BaseDatabase.COLUMN_ID:
// My code
case WeddingDatabase.COLUMN_PREMIUM:
// My code
case BaseDatabase.COLUMN_UPDATE_CLEAN:
print("type = \(BaseDatabase.COLUMN_UPDATE_CLEAN), key = \(key)")
// My code
default:
// My default code
}
}
Моя консоль:
dictionary = ["note": <null>, "date": 2024-08-08 00:00:00, "update": 2019-07-09 08:57:05, "id_wedding": 1]
type = update, key = date // WHY??
type = update, key = update
UPDATE:
Сократи код до банального:
let key = "date"
switch key {
case "update":
print("key = \(key)")
break
default:
print("default = \(key)")
break
}
Добавлен код в viewDidLoad
пустом viewController. На консоли все еще отображается key = date
. Я вижу проблему ТОЛЬКО в моем проекте. Я попытался добавить код в новый проект и в playgroud - все работает нормально (default = date
выводится на консоль). Как это может быть? Я пробовал разные симуляторы (и версии для iOS) - проблема все еще там. Я также пытался очистить проект - проблема не устранена. Может быть, где-то в проекте переопределена работа оператора switch - это возможно?