Xcode - Недопустимый символ в исходном файле (заменить "на" ")
У меня вопрос о Xcode (Swift). Иногда, когда я пишу оператор if. Что-то вроде этого:
if(a == 2){
//do Sth
} else {
//do Sth
}
Xcode вызывает ошибку: "Недопустимый символ в исходном файле"
Я знаю, что это не имеет большого значения и исправлено, нажав "Fix-it", но я хочу
знать, в чем проблема. Это не имеет смысла для меня...
![Ошибка]()
Мой Xcode находится на 7.2, и я использую Swift - я не знаю, является ли это просто проблемой Swift.
Ответы
Ответ 1
У меня была эта проблема. То, как я решил это: 1) копировать все, что у вас есть, в Sublime Text или другой редактор кода и иметь представление (возможно, вам нужно включить просмотр скрытых символов). У меня был код в DC2, который является своего рода символом управления ASCII. Для меня это было вызвано тем фактом, что я поставил игровое поле в ручное исполнение и привязал к нему ярлык клавиатуры, который, казалось, вводил этот управляющий символ каждый раз, когда я его выполнял, используя ярлык. Я просто изменил ярлык и удалил символы ASCII, поскольку я смог увидеть их в Sublime Text. (Ссылка в комментариях к OP относительно режима слева направо не имела смысла и не работала для меня.)
Ответ 2
Я столкнулся с этой проблемой, когда я использовал клавиатуру, отличную от Apple, с моим iMac. Возможно, и ваше дело. Они добавляют лишние контрольные символы! Один из способов исправить его в Xcode можно выбрать из меню "Редактор" > "Показать невидимые" и посмотреть, есть ли какие-либо нежелательные символы, в которых возникает ошибка, и удалять их.
Ответ 3
Редактор- > Показать "Невидимые" не отображали персонажа, который вызывал у меня проблему. Безразрывное пространство (u00a0) будет отображаться как пробел без индикатора "точка". Тем не менее, это действительно трудно увидеть, и я полностью пропустил это в первый раз. Zoom помогает.
Один из способов обнаружения недопустимых символов - использовать код Visual Studio и включить настройки:
"editor.renderControlCharacters": true
"editor.renderWhitespace": "all"
Это имеет ту же проблему видимости, что и без прерывания, как Xcode, однако он показывает другие специальные символы.
Чтобы сделать его более очевидным и, возможно, обнаружить более недопустимые символы, установите расширение "ascii-unicode-escape" и следуйте инструкциям.
Я не понимаю, почему Xcode разрешает эти недопустимые символы, вставляет их в исходные файлы без причины и даже не дает возможности их обнаруживать! Я пытаюсь написать код, а не секреты невидимых чернил, черт возьми! Я предполагаю, что это не проблема для скомпилированного кода, который покажет ошибку, но не так удобен с шейдерным кодом.
Ответ 4
У меня такая же проблема. После тщательного тестирования я нашел решение. Надеюсь, это может спасти другие обширные часы исследований этого ужасного опыта Xcode.
Проблема заключается в том, что у меня есть клавиатура FILCO Minila, у которой есть клавиша "App" рядом с "стрелкой влево". Я бы случайно нажал "Приложение" при наборе текста очень быстро, и он попал в невидимый символ "DEL" (Data Link Escape, Unicode 0010). Его можно было увидеть только при копировании в Sublime. Это даже не видно под Xcode собственный "Редактор → Показать невидимые" (Говоря о хорошем пользовательском опыте...)
Магически это не происходит с Sublime или VSCode, только для Xcode. Так что никаких оправданий для Xcode, я думаю?
Исправление заключается в том, чтобы загрузить Karabiner, расширенную клавиатуру для macOS и сделать недействительным ключ "App" или сопоставить его с чем-то другим. Karabiner также аннулирует ваше сопоставление клавиш в конфигурации клавиатуры по умолчанию в системе. Поэтому вам придется переделать такие вещи, как "cmd", "alt", если вы их настроили. Если это так, обязательно сопоставьте оба левого и правого клавиш модификатора в Karabiner, потому что в соответствии с просмотром ключевых событий Karabiner ключевая карта по умолчанию будет отображать left_alt и left_cmd в right_cmd и right_alt... Просто раздражает, как ад...
Мне потребовалось 2 месяца, чтобы понять эту проблему, и 2 часа, чтобы на самом деле найти ее ключ "app", который виновен и исправить.