0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

@AppStorage変数をバインディングできるのか。。。

Posted at

背景

現在、計算を用いたごく簡単なアプリの作成過程でエラー?というかわからない点が浮上したので記事にまとめていきたいと思います。

その疑問点とは@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で記事書くのはもちろん初めてだし、もしかしたら僕の理解が間違っている可能性もあリます。

もし間違えていたら教えてください!!お手数をおかけします。

初めて書いた感想としてはいつもの数倍理解が深まりました!書いてよかった!これからも書いていきたいと思いますのでお願いします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?