Localizable.strings中使用#pragma mark报错问题求助
解决Localizable.strings中使用// MARK:分组导致的编译格式错误问题
我来帮你搞定这个问题!其实// MARK:本身完全可以在Localizable.strings里用来做分组整理,你遇到的编译错误大概率不是MARK注释的锅,而是注释前后的键值对语法出了问题——只是刚好在添加第二个MARK的时候暴露出来了。
正确的分组写法示例
先给一个能正常编译的标准示例,你可以对照着调整自己的文件:
// MARK: MENU ITEMS "menu_home" = "Home"; "menu_profile" = "Profile"; "menu_settings" = "Settings"; // MARK: EMAIL SETTINGS "email_subject" = "Feedback"; "email_body" = "Please describe your issue:"; "email_send_button" = "Send";
常见的格式错误排查点
你可以按下面的顺序逐一检查你的文件:
- 检查分号:每一行键值对末尾必须带有分号
;,漏写的话Xcode会直接报格式错误。比如你可能在第一个MARK组的最后一行键值对忘了加分号,到第二个MARK时就触发了错误。 - 检查引号匹配:所有键和值的双引号必须成对出现,不能有漏写或者多余的引号。比如
"menu_home = "Home";这种写法就会直接导致格式异常。 - 检查特殊字符转义:如果值里包含双引号或者反斜杠,必须用反斜杠转义。比如正确写法是
"greeting" = "Hello \"User\"";,直接写"Hello "User""就会报错。 - 检查文件编码:确保你的Localizable.strings文件是UTF-8编码(带BOM也可,但推荐纯UTF-8)。在Xcode中选中文件,查看右侧属性面板的「Text Encoding」选项,改成UTF-8即可。
- 注释写法要正确:在Localizable.strings里只能用双斜杠
//开头的注释,不要用Objective-C/Swift代码里的#pragma mark——后者放在.strings文件里会被识别为非法内容,直接引发编译错误。
快速定位错误位置
如果还是找不到问题,可以打开Xcode的「Issue Navigator」(左侧导航栏的感叹号图标),点击错误信息旁的箭头,Xcode会跳转到大致的错误位置,仔细查看那一行前后的内容,通常就能发现语法问题。
内容的提问来源于stack exchange,提问作者Mani
相关产品推荐
相关产品推荐

