この記事では、SwiftUIのFatal error: Unexpectedly found nil while unwrapping an Optional valueの対応方法を日本語で解説します。
◆動作検証環境
・ローカル環境:mac Catalina
・XCode:12.1
・SwiftUI:2.0
・XCode:12.1
・SwiftUI:2.0
目次
スポンサードリンク
Fatal error: Unexpectedly found nil while unwrapping an Optional valueの発生原因
MVVMを利用して開発しているアプリなどは、ObservableObject プロトコルに適合させたクラスを利用して、アプリ共通の変数を利用する機会が多いです。
アプリ共通の値をViewを、View内に設置したボタンタップなどのイベントによって、取得し表示させる場合に、今回のテーマであるFatal error: Unexpectedly found nil while unwrapping an Optional value のエラーに出会う事があります。
下記のようなコードだと、Viewを表示した際にアンラップしても値がないためエラーとなります。
1 2 3 4 5 6 7 8 9 10 11 | @EnvironmentObject var appState: AppState Button(action: { appState.makeGetValue() }) { Text("情報取得") } Text(appState!.name) |
Fatal error: Unexpectedly found nil while unwrapping an Optional valueの解決方法
そこでText(appState!.name) を下記のように、デフォルトの値をもたせる事で解決できます。
イベントが発生して新しい値が取得されると、デフォルトの値から取得した値へ表示が変化します。
1 2 3 | Text(appState?.name ?? "") |
"" を"defaultName" にすると、Viewが呼ばれた時は、defaultNameと表示されます。
以上、SwiftUIで発生する、Fatal error: Unexpectedly found nil while unwrapping an Optional valueの対応方法を解説しました。