Swift 3上的NSLocalizedString运行时错误

问题描述:

我正在用Swift和SpriteKit开发一个应用程序。我已经转换我的代码从雨燕2.3斯威夫特3,但是当我运行的代码,我得到了以下错误:Swift 3上的NSLocalizedString运行时错误

Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP.subcode=0x0)

错误出现在这条线。我创建了okLabelSKLabelNode

okLabel.fontName = (text: NSLocalizedString("dialogOKFont", comment: "")) as! String 

Localizable.strings(Base),我定义"dialogOKFont"如下:

"dialogOKFont" = "Optima-Bold"; 

我真的很感激,如果有人给我一个答案或提示来修复这个错误。先谢谢你。

+0

它看起来像你强制转换为字符串括号S的外面为你的字体后。另外,看看这个扩展http://*.com/questions/25081757/whats-nslocalizedstring-equivalent-in-swift – TheValyreanGroup

+1

!意思是“如果我要找的东西不存在,请崩溃”。 – gnasher729

+3

Paulo Mattos的回答解释了这个问题。但是,你真的想使用NSLocalizedString来获取字体名称吗? – gnasher729

试试这个:

okLabel.fontName = NSLocalizedString("dialogOKFont", comment: "") 

你原来的代码已经两个相关的错误:

  • 你包裹在单个元素的元组的本地化字符串:(text: ...)
  • ,然后你铸造这个元组回到String,导致EXC_BAD_INSTRUCTION崩溃

使用只有NSLocalizedString(...)足以让本地化String你:)

+0

非常感谢!有效! – vanagar