2017-05-07 8 views
1

Ich entwickle eine App mit Swift und SpriteKit. Ich habe meinen Code von Swift 2.3 Swift 3 umgewandelt, aber wenn ich den Code ausführen bekomme ich folgende Fehlermeldung:NSLocalizedString Laufzeitfehler auf Swift 3

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

Der Fehler in dieser Zeile angezeigt. Ich habe okLabel mit SKLabelNode erstellt.

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

Auf Localizable.strings(Base), ich habe "dialogOKFont" wie folgt definiert:

"dialogOKFont" = "Optima-Bold"; 

ich wirklich zu schätzen, wenn jemand mir eine Antwort oder Hinweis gibt diesen Fehler zu beheben. Vielen Dank im Voraus.

+0

Es sieht aus wie Sie außerhalb der eingeklammerten s für Ihre Schriftart auf eine Zeichenfolge sind zu werfen. Überprüfen Sie auch, diese Erweiterung http://stackoverflow.com/questions/25081757/whats-nslocalizedstring-equivalent-in-swift – TheValyreanGroup

+1

! bedeutet "stürzt bitte ab, wenn das, was ich suche, nicht da ist". – gnasher729

+3

Paulo Mattos' Antwort erklärt das Problem. Aber möchten Sie NSLocalizedString wirklich verwenden, um einen Schriftnamen zu erhalten? – gnasher729

Antwort

4

Versuchen Sie stattdessen:

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

Ihr Original-Code hatte zwei Fehlentscheidungen:

  • Sie die lokalisierte Zeichenfolge in einzelnen Element Tupel wrapped: (text: ...)
  • und dann Sie dieses Tupel gegossen zurück zu String im EXC_BAD_INSTRUCTION Absturz resultierenden

nurNSLocalizedString(...) Verwendung genügt die lokalisierte zu bekommen String Sie nach :) waren

+0

Vielen Dank! Es funktionierte! – vanagar