ここでは、一部の電話機にのみ表示される奇妙な問題が発生します。私はそのように初期化するカスタムUIViewがあります。 パラメータ付きのローカライズされた文字列でEXC_BAD_ACCESSがクラッシュする
let passQuizToTutorAlert = SAAlertView(title: NSLocalizedString("quiz-title", comment: ""), message: String(format: NSLocalizedString("quiz-message-parameter", comment: ""), 4), textAlignment: .left, customView: headerImageView, alternativeLayout: true)
このエラーでクラッシュした上記の行
は:Thread 1: EXC_BAD_ACCESS (code = 1, address = 0x4)
私は、initで様々な方法で再生しました。パラメータを使ってローカライズされた文字列を使用するとクラッシュするように見えます。例えば、ここでのコードには問題がありません:それは上のクラッシュ
let passQuizToTutorAlert = SAAlertView(title: NSLocalizedString("quiz-title", comment: ""), message: NSLocalizedString("quiz-message", comment: ""), textAlignment: .left, customView: headerImageView, alternativeLayout: true)
ローカライズされた文字列は、そのように定義されています
"quiz-message-parameter" = "You have %d credits left";
は、私がここで間違って何をしているのですか?なぜそれは、ローカライズされた文字列のパラメータでクラッシュするだけですか?
編集:
少しデバッグしました。このクラッシュはアラートビューから独立しています。試してみると:
let aString = String(format: "You have %d credits left", 4)
print(astring)
クラッシュしません。
let aString = String(format: NSLocalizedString("quiz-message-parameter", comment: ""), 3)
まず第一に、関連性のないものから問題を分離してください。 'NSLocalizedString()'は正しい結果を返しますか? 'String(format:"%dクレジットが残っています "、4)'は動作しますか?これはSAAlertViewにまったく関連していますか? *デバッグ!* –
SAAlertViewとは独立しています。文字列形式のNSLocalizedStringを使用する場合にのみクラッシュします。 @MartinR – Kex
シミュレータまたはデバイスですか?どのデバイスですか? –