LoginSignup
0
1

More than 1 year has passed since last update.

SwiftUIのデータ管理についてのお勉強〜値型編〜

Posted at

本記事について

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/

ぜひ、参考にしてみてください。

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