Swift Логическое значение <недействительный>

Приложенный скриншот говорит все: у меня есть действительный истинный Bool, я отрицаю его с помощью оператора bang, и (Xcode говорит мне) У меня есть недопустимое значение.

Похоже, что это "недопустимое" значение ведет себя так, как если бы оно было ложным. Но действительно, wtf?

введите описание изображения здесь

Ответ 1

У меня была эта проблема в Xcode 8.3.1 и Swift 3.1 https://github.com/onmyway133/notes/issues/278

Я пробовал

  • Очистить папку сборки и удалить папку с производными данными
  • Удалить приложение
  • Reset симулятор
  • Перезапустить Xcode
  • Перезагрузка Mac

Но не работает. Обходной путь -

let enabled = disable ? false : true

Ответ 2

Я не эксперт LLVM, но я бы не удивился этому поведению, если только оптимизация не установлена ​​на Onone, и в этом случае он должен был оставить ваш код в покое. В конце концов, промежуточная переменная просто просит оптимизировать.

Ответ 3

У вас такая же проблема, с правильным значением для добавления кода типа print(theBoolValue).

Но при использовании p в быстрой командной строке. Или просто проверьте значение в стеке отладки, значение станет <invalid>(Oxfe).