背景
現在、計算を用いたごく簡単なアプリの作成過程でエラー?というかわからない点が浮上したので記事にまとめていきたいと思います。
その疑問点とは@AppStorage変数を@Bindingして他のViewに反映をさせることができるかということです。
ちなみに僕はドがつくほどのアプリ開発初心者ですので間違っていたら教えてくださると嬉しいです。
@AppStorageを他のファイルに@Bindingしたら
@AppStorageを他のファイルに@Bindingしたら下記のようなエラーが発生しました。
Return from initializer without initializing all stored properties
どうやら初期値を入力してくれ!!的なことらしい
ということで
init(){
self.result = 0.0 ←Dobule型なので0.0を初期値に入れてみます
}
というふうにやってみました。
そしたらなんとまたエラーが発生してしまいました、、、、
Cannot assign value of type 'Double' to type 'Binding' というエラー発生
訳すと、Double型のデータをBinding型に割り当てることができないということらしい。
色々ネットを探ってみると、
init(result:Binding<Double>){
self._result = result ← 0.0からresultへと変化させました
}
のように変化させるといいらしい。
初期化処理を自動でお任せしていたから、init()の引数にはDouble型が入るって勘違いしていたけれど実際に入ってきたのはBinding型(Double)だったからXcode君が焦ってエラーを出したって感じなのかな?笑
焦っているXCode君に手動でinit()の中に(result:Binding)と引数の方の情報を教えてあげることでエラーが解消してくれました。
あともう一つ変わったところで言うと
self._result = result
ですね。ここはなぜ変化したかと言うとプロパティーラッパーを定義したプロパティに(_)をつけるとプロパティラッパー内部変数にアクセスができるから!
最後に
今回Qiitaで記事書くのはもちろん初めてだし、もしかしたら僕の理解が間違っている可能性もあリます。
もし間違えていたら教えてください!!お手数をおかけします。
初めて書いた感想としてはいつもの数倍理解が深まりました!書いてよかった!これからも書いていきたいと思いますのでお願いします。