【Swift UI/Combine】@Publishedとは?プロパティの監視と使い方

この記事からわかること

  • SwiftCombineフレームワーク
  • @Published使い方
  • クラスプロパティ監視する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Swift UIでクラスのプロパティの変更を監視するために使用する@Published属性についてどのようなものなのかまとめていきます。

@Publishedとは?

公式リファレンス:@Published

@propertyWrapper  struct Published<Value>

@Publishedとは非同期処理やデータバインディングなどための機能を提供するCombineフレームワークに属するプロパティラッパです。Swift UIでは@ObservedObjectとセットで使用するイメージが強いですが、もちろん単体でも役割を持っています。

おすすめ記事:【Swift UI】@ObservedObjectの意味と使い方!クラスとプロトコルとの関係

@Publishedの役割は指定したプロパティのPublisherを発行することです。PublisherはCombineフレームワークの肝部分であり状態変換(データなど)検知し通知を出す存在です。

おすすめ記事:【Swift UI】Combineフレームワークの使い方!PublisherとSubscriberの違い

それをSubscriber(サブスクライバー)が購読することで値の変化時に任意の処理を施したり、状態変化に応じた処理を実行させることができます。

使い方

@Publishedはプロパティラッパなのでクラスのプロパティを宣言時のvarやletの前に付与します。クラスにのみ使用できるように制約がかけられているので構造体では使用できません。

class Weather {
    @Published  var temperature: Double
    init(temperature: Double) {
        self.temperature = temperature
    }
}

Publisherとして操作する

@Publishedの公式ドキュメントを見るとPublisherとしての使用例が記述されています。

class Weather {
    @Published  var temperature: Double
    init(temperature: Double) {
        self.temperature = temperature
    }
}

let weather = Weather(temperature: 20)
cancellable = weather.$temperature
    .sink() {
        print ("Temperature now: \($0)")
}
weather.temperature = 25

上記の例ではPublisherとなったプロパティからsinkメソッドを呼び出すことでサブスクライバーを登録しています。これでプロパティの値の変更が観測されたタイミングでサブスクライバーとして登録された任意の処理を実行させることができます。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

\ アプリをリリースしました /

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

CART-共有できるお買い物リスト-

CART-共有できるお買い物リスト-

無料posted withアプリーチ

QuickPressPanel

早押しゲーム-QuickPressPanel-

無料posted withアプリーチ

貸し借り管理アプリ

友達とのお金の管理-貸し借り管理アプリ-

無料posted withアプリーチ

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

New Article

index