2016-11-22 3 views
0

私のコードにエラーがありましたが、私のコードに何が間違っているか分かりません。IOS自分のコードで何が間違っていますか? "スレッド1:EXC_BAD_ INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0)"

Thread 1: EXC_BAD_ INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0) Error "fatal error: unexpectedly found nil while unwrapping an Optional value"

私のコードは次のとおりです。

let insertSQL = "INSERT INTO CONTACTS (location, reason, descri) VALUES ('\(location.text!)', '\(reason.text!)', '\(descri.text!)')" //Thread 1: EXC_BAD_ INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0) 
+0

エラーが発生した行を含む部分をポストするだけです。 – Tj3n

+0

感嘆符は、エラーを引き起こす可能性があります。ラベルの1つのテキストプロパティは、おそらく 'nil'です。 – vadian

+0

私のコードを更新しました。確認してください、ありがとうございます。 – LeonSaber

答えて

0

(それがすべて1つを持っている場合)、オプションの値にアクセスするためには、あなたがアンラップにそれを必要とします。任意の値を安全にまたは強制的にアンラップできます。オプションを強制的にアンラップして値を持たなかった場合、あなたのプログラムは上記のメッセージでクラッシュします。

1.明示的な強制これはで行われ

をアンラップ:

このクラッシュは、力アンラップの2種類で発生する可能性があります!オプションのオペレータ。例えば

anOptionalStringとして

let anOptionalString: String? 
print(anOptionalString!) // <- CRASH 

がここnilである、あなたはそれをアンラップ強制ライン上でクラッシュを取得します。

2.暗黙アンラップOptionals

これらのタイプ後!はなく、?で定義されています。

var optionalDouble: Double! // this value is implicitly unwrapped wherever it's used 

これらのオプションには値が含まれているとみなされます。したがって、暗黙的にアンラッピングされたオプションにアクセスするたびに、自動的にアンラップされます。値が含まれていない場合は、クラッシュします。

print(optionalDouble) // <- CRASH 

クラッシュの原因となった変数うまくするためには、あなたは、オプションのタイプを見つけるかもしれない定義を表示しながらクリックしを保持することができます。

for more details go through this image

IBOutlets、特に、通常は暗黙的に開封されたoptionalsです。これは、初期化後にxibまたはストーリーボードが実行時にアウトレットをリンクするためです。したがって、コンセントがロードされる前にアウトレットにアクセスしていないことを確認する必要があります。また、ストーリーボード/ xibファイルで接続が正しいことを確認する必要があります。そうしないと、実行時に値がnilになるため、アンラップされた。

+0

ありがとう、今働いています。再度、感謝します! – LeonSaber

関連する問題