本記事について
SwiftUIのデータ管理についてのアウトプットやメモの共有です。
本文に載っているコードは、説明用であり、コピペでは動かないためご容赦ください。
前提
順番は違うが、過去にObservableObjectについて調査したため、今回は値型の場合に扱うProperty Wrappersについて調査する。
https://qiita.com/Fuyan777/items/d79eef243e2ded33780e
SwiftUIのデータ管理におけるProperty Wrappers
改めて再確認...
Property Wrappersの利用方針があり、大きく3つである。
- データは何か?
- SwiftUIでは値型、参照型のデータを扱うProperty Wrapperが存在
- データをどのように処理するか?
- 読み込みか、変更もあるのかでデータの扱いも変わる
- データはどこから来るか?
- View自身から発生、親Viewから渡される、環境値として渡されるのか
@State
データが値型、データの更新、データの発生源がView自身の場合は@Stateを利用
struct ParentView: View {
@State private var countNum = 0
var body: some View {
Button(action: {
counter += 1
}, label: {
Text("count: \(countNum)")
})
}
}
@Binding
データが値型、データの更新、データの発生源は親Viewなど外から渡される場合は@Bindingを利用
struct ParentView: View {
@State private var countNum = 0
var body: some View {
ChildView(counter: $countNum)
}
}
struct ChildView: View {
@Binding var countNum: Int
var body: some View {
Button(action: {
counter += 1
}, label: {
Text("count: \(countNum)")
})
}
}
終わりに
今回は以下の記事を参考に学習しました。
https://blog.personal-factory.com/2020/11/14/publish-swiftui-catalog-book/
ぜひ、参考にしてみてください。