まず、Optional を定義しましょう
Optional 値は、何らかのタイプ ( 、、 、...) のコンテナーであり、値 ( 、、、...) またはを含むことができます。Int
String
UIColor
1
"Hello world"
.greenColor()
nil
let anOptionalInt: Int? = 1
let anotherOptionalInt: Int? = nil

Swift で Optional 値が表示されると、次のように考えます。
これには実際の値またはnil
強制アンラップ
に含まれる値を抽出するアクションですOptional
。この操作は、コンパイラに次のように伝えているため危険です。この Optional 値には実際の値が含まれていると確信しています。抽出してください!
let anOptionalInt: Int? = 1
let anInt: Int = anOptionalInt!
anInt
値 1 が含まれるようになりました。

を含む Optional 値に対して強制アンラップを実行するnil
とfatalError
、アプリがクラッシュし、回復する方法がありません。
let anotherOptionalInt: Int? = nil
let anotherInt = anotherOptionalInt!
fatal error: unexpectedly found nil while unwrapping an Optional value

暗黙的にアンラップされたオプション
Implicitly unwrapped オプションを定義するとき、それを読み取るたびに自動的に強制アンラップを実行するコンテナーを定義します。
var text: String! = "Hello"
今私たちが読んだらtext
let name = text
Optional は取得しませんが、コンテンツのラップが自動的に解除されるためString
、プレーンになります。String
text
ただし、テキストはまだオプションであるため、そのnil
中に値を入れることができます
text = nil
しかし、それを読むとすぐに(そして含まれているnil
)致命的なエラーが発生します。nil
let anotherName = text
fatal error: unexpectedly found nil while unwrapping an Optional value