![見出し画像](https://assets.st-note.com/production/uploads/images/18138910/rectangle_large_type_2_b484765a3cb1ba25262e840a728e4a99.png?width=800)
SwiftUIで行こう!- @ObservedObject!
@ObservedObjectについて記録しておきます。
何だか同じようなものとして@Stateがありますが、@ObservedObjectとは少し違いがあります。
@Stateについては
でも書きました。@Stateで宣言された変数はデータを監視して適宜データの変更をViewに伝えます。
同じように@ObservedObjectもデータを監視して適宜データの変更を行いますが、少し様子が違います。Combine frameworkであり@ObservedObjectは外部でObservableObjectプロトコルに適合させたclassで宣言して使います。
ちょっと個人的にわかりにくいと思っていたのが、@Bindingの使い方です。基本的には@Stateで宣言した変数を使ってView間でのデータの受け渡しをする場合@Stateと絡んで@Bindingを使い受け渡しをします。
@〜
の使い方を整理しておかないとごっちゃになってしまいます。
@ObservedObject
ですが、
ObservableObject プロトコルを使い定義して変更が必要な変数には
@Published
他、参考サイトです。
実際のコードをみてきます。
まず、プロトコルに適合した"class"を作ります。変数には@publishedをつけます。
class Order: ObservableObject {
@Published var items = [String]()
}
Viewを作っていきます。
struct ContentView: View {
@ObservedObject var order = Order()
var body: some View {
// your code here
}
}
@Stateは個々のViewに対して使うのに対して@ObservedObjectは、外部で宣言したものをオブジェクトとして、まとめて使います。
@ObservedObjecを変数の前に接頭語としてつけて使います。この場合だと、
@ObservedObject var order = Order()
ですね。
@Stateと@ObservedObjectの使い方、使い分け方についてまとめてみました。
この記事が気に入ったらサポートをしてみませんか?