我对Xcode(Swift)有疑问。有时我写一个if语句。像这样:
if(a == 2){
//do Sth
} else {
//do Sth
}
Xcode抛出一个错误:“源文件中的字符无效” 我知道这没什么大不了的,通过点击“修复它”来修复,但我想要 知道是什么问题。这对我来说没有意义......
我的Xcode是7.2,我正在使用Swift - 我不知道这是否只是一个Swift问题。
答案 0 :(得分:10)
我遇到了这个问题。我解决它的方法是1)将您拥有的任何内容复制到Sublime Text或其他代码编辑器中并查看(您可能需要启用查看隐藏字符)。我的DC2中有一个代码,它是某种ASCII控制字符。对我来说,这是因为我已经将操场放入手动执行并绑定了一个键盘快捷键,每次我使用快捷键执行它时似乎都会进入该控制字符。我只是更改了快捷方式并删除了ASCII字符,因为我能够在Sublime Text中看到它们。 (关于从左到右模式的OP评论中的链接毫无意义,对我来说没有用。)
答案 1 :(得分:4)
当我在iMac上使用非Apple键盘时遇到了这个问题。可能也是你的情况。他们添加了不必要的控制字在Xcode中修复它的一种方法是从菜单Editor> Show Invisibles中选择,看看是否有任何不需要的字符会抛出错误并删除它们。
答案 2 :(得分:3)
我遇到了同样的问题。经过大量测试,我找到了解决方案。希望它可以节省其他人花费大量时间研究这种可怕的Xcode体验。
问题是我有一个FILCO Minila键盘,它在“左箭头”旁边有'App'键。当打字速度非常快时我会不小心点击'App',它会输入'DEL'(数据链接转义,Unicode 0010)不可见字符。它只能在复制粘贴到Sublime时看到。它甚至在Xcode自己的'编辑器 - >下都不可见。 Show Invisibles'(谈论良好的用户体验......)
奇怪的是,这不会发生在Sublime或VSCode上,只发生在Xcode上。所以我猜Xcode没有借口吗?
修复程序是下载Karabiner,一个用于macOS的高级keymapper,并使'App'键无效或将其映射到其他内容。 Karabiner还会使系统默认键盘配置中的键映射无效。所以你必须重新映射像'cmd','alt'这样的东西,如果你已经定制它们的话。如果是这样,请务必映射左侧和右侧。在Karabiner中使用右侧修改键,因为根据Karabiner的关键事件查看器,系统默认键映射将映射left_alt& left_cmd to right_cmd and right_alt ...只是讨厌地狱......
我花了2个月的时间才意识到这个问题,并且花了2个小时才发现它是'应用'键是罪魁祸首并修复它。
答案 3 :(得分:3)
对我来说,这是ESC键-完全可复制!如果我去搜索并在搜索窗口中按ESC,我还会找到标记为-的事件,并且可以将它们替换为空。但是即使显示“显示不可见”也不会显示!
最终解决方案:将ESC键绑定绑定到“取消”。就这么简单。
答案 4 :(得分:2)
Editor-> Show Invisibles没有显示导致我出现问题的角色。无中断空间(u00a0)将显示为没有“点”指示符的空格。然而,这真的很难看,我第一次完全错过了它。缩放有帮助。
我发现检测无效字符的一种方法是使用Visual Studio Code并启用设置:
“editor.renderControlCharacters”:是的 “editor.renderWhitespace”:“all”
与Xcode相比,它具有与无中断空间相同的可见性问题,但它确实显示了其他特殊字符。
为了使其更加明显并可能检测到更多无效字符,请安装扩展名“ascii-unicode-escape”并按照说明进行操作。
我不明白为什么Xcode允许这些无效字符,无缘无故地将它们插入到源文件中,甚至不提供检测它们的选项!我正在尝试编写代码,而不是隐形墨水中的秘密,该死!我想这对于编译代码来说不是一个问题,它会显示错误,但对着色器代码不太方便。
答案 5 :(得分:0)
Alt + Space 命令在Xcode文件中创建一个特殊的隐藏字符。您可以查看错误here
的详细信息要找到特殊字符,我曾进行过一些幼稚的锻炼(Apple可能需要正确解决此问题,因为“显示不可见”实际上并未显示该字符。)
在文件中搜索“空格”字符,然后检查其是否像屏幕截图中一样隐藏。
请参见下面的屏幕快照,您可以通过这些屏幕快照猜测文件中隐藏的特殊字符的位置。
答案 6 :(得分:0)
我正在使用XCode 10.1。
使用Xcode:即使显示不可见,Xcode也无济于事。
然后您可以将代码复制到Sublime Text =>,您将看到这些不可见字符,它们是 <0x0f> 。点击图片可查看详细信息。
使用Sublime Text 3,就可以了!
=>然后,您知道在哪里删除冗余。希望有帮助!
答案 7 :(得分:0)
尝试使用
将所有Xcode设置恢复为原始状态defaults delete com.apple.dt.Xcode
在终端
答案 8 :(得分:0)
您是否将选项⌥键用于任何键盘快捷键?这是我的问题。似乎将选项键与其他键组合可以插入隐藏的字符。
对我来说,这是当我在Xcode中使用 ⌃ + ⌥ + p 快捷方式恢复SwiftUI预览画布时发生的。它添加了一个0x10
字符。我发现了这一点,正如其他张贴者所建议的那样,是将Xcode中的代码粘贴到Sublime Text中。
(注意:我应该一直使用⌘ + ⌥ + p )。