SwiftUI – 値の監視を楽に @Observable

SwiftUI

@Observable マクロとは?

@Observable は Swift の Observation フレームワークで提供されるマクロで、
クラスや構造体を「監視可能(Observable)」にするための仕組みです。

これを付けることで、その型は Observable プロトコルに自動で準拠し、
プロパティの変更を SwiftUI などの UI に通知できるようになります。
とのことです。

どの場面で使うか?

従来の ObservableObject + @Published を置き換えることができます。

class Car: ObservableObject {
    @Published var name: String = ""
    @Published var needsRepairs: Bool = false

    init(name: String, needsRepairs: Bool = false) {
        self.name = name
        self.needsRepairs = needsRepairs
    }
}

// ビュー側で
@StateObject private var car = Car(name: "プリウス2")

@Observableで書くと

@Observable
class Car {
    var name: String = ""
    var needsRepairs: Bool = false

    init(name: String, needsRepairs: Bool = false) {
        self.name = name
        self.needsRepairs = needsRepairs
    }
}

// ビュー側で
@State private var car = Car(name: "プリウス")

・プロパティの@Published 不要
・自動的に 値を監視
・値が変更されると、Viewを更新
簡単に書けるようになります。

宣言したプロパティ全てが自動で監視対象となるため、使うときに注意

備考

iOS17以降で使用可能です。

コメント

タイトルとURLをコピーしました