【SwiftUI】Bindingにoptional変数をアンラップして渡す

Bindingにoptional変数をアンラップして渡す方法を解説します。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】12.4
【Swift】5.3.2
【iOS】14.4
【macOS】Big Sur バージョン 11.1
スポンサーリンク

背景

Core Dataでエンティティの属性情報をTextFieldに渡そうとした所、次のエラーメッセージが出ました。

Core DataでString型の属性はoptionalで定義される為、TextField側で期待する'Binding<String>'型にするは、アンラップして渡す必要があります。
この時のアンラップ方法がちょっと特殊でしたので、記録に残しておきます。

スポンサーリンク

エラーの再現

同様のエラーが起きる状況をシンプルなコードで再現しました。

エラーが発生する行を次のようにアンラップしてみても、今度は別のエラーが出ます。

スポンサーリンク

対応方法

アンラップの記述を次のようにしてやると、エラー無く動作します。

あくまで強制アンラップなので、実装の際には事前に値がnilで無いのを確認する処理を入れて下さい。

スポンサーリンク

合わせて読みたい記事

(アーカイブ)【SwiftUI】TextFieldの使い方
(2020/09/26 更新) 本記事で使用しているTextFieldの使い方はiOS14以前の仕様を元に解説しています。 最新の情報はこちらの記事を御覧ください。 テキスト入力に使うTextField()の使い方を解説します。
【SwiftUI】Core Dataの使い方:エンティエィ(Entity)を定義する
(2021/04/26 更新) Xcodeでエンティティを定義する方法を解説します。
【Swift】if let とは?
Swiftのコードでよく見かける if let 構文について解説します。