2016-10-29 5 views
1

私はこの無邪気な行がアプリをクラッシュさせる可能性があることを理解しようとしています。同じコードは64ビットシミュレータ(iPhone 5以降)でも動作しますが、new_or_used(NSManagedObjectのオプションの文字列)にアクセスするたびに32ビットシミュレータでクラッシュします。スタックトレースは役に立ちません。32ビットシミュレータを使用したEXC_BREAKPOINT(コード= EXC_I386_BPT、サブコード0x0)

洞察力がありがとうございます。ありがとう!

enter image description here

答えて

0

あなたの画像によると、コンパイラがすでに割り当て解除文字列を使用しようと思われます。あなたのクラッシュを避けるために

、としてあなたのコードを修正しよう:これはちょうど最近再び起こった、そしてそれは「新しい」で始まる変数によるものであった

if let newOrUsed = itemPriceGuide.new_or_used as? String { 
    // do your stuff 
} 
+0

私は 'new_or_used'が既にオプションのStringであるため、これを行うことはできません。これにより、「文字列から文字列へのダウンキャストはオプション文字列のみをアンラップする」エラーが発生します。 – XCool

+0

動作させてクラッシュを回避するには、その文字列をオプションではないと宣言しなければならない場合は、isが空であることを確認することもできます。オプションとして宣言すると、可能な値としてnilを受け取ります –

関連する問題