初心者プログラミング日記 SwiftUI ⑥ ObseravableObject

WWDC20 Data Essential  in SwiftUIを見ています。

 

2つ目のルカさんのパートはObseravableObjectについてでした。

下記初心者の私の意訳なので、違う可能性ありありです。

 

@Stateと@Bindingでも良いけど、本来データやプログラムはUIとは分けるよね?

そうなると@State と@Bindingは使えないから、その場合の方法を伝えるね。

 

その場合はクラスでObseravableObjectを使うんだ。

で、使いたいプロパティに@Publishedをつけると、そのタイプにした、

@ObservedObject

@StateObject

@EnvironmentObject

をつけたプロパティをSwiftUIが監視して、どれかに変化があったら、全部変更してくれるよ。

 

@ObseravedObjectは更新したいインスタンスにつければ良い。

でも、例えば更新したけど、そのUIが削除されてしまう可能性があるインスタンスもあるよね。

そういう時は、@StateObjectを使うんだ。削除された後のタイミングでUIを更新するからね。

あとは、複雑な構造になって、@ObseravedObjectから階層的に遠いViewのインスタンスを更新したい時。その時は、@EnvironmentObjectを使えば、直接的に使えるよ。