プログラマーです。雑記系、プログラミング系、投資系の記事を書いています!

SwiftUI ObservableObjectとは?

どうも名探偵です。

本日はSwiftUIのObservableObjectについての解説をします。

 

私が参考にしている参考書です。

是非読んでみてください。

 

概要

ObservableObjectとは変数を共有するためにあります。ObservableObjectを採用した

クラスで宣言すれば別の構造体でインスタンス生成をしただけで、共有できるという

便利なものです。

 

詳しい内容

もっと詳しく解説していきます。まず、ObservableObjectプロトコルを採用した

クラスを宣言します。共有したい変数には@Published属性をつけてパブリッシュします。

そして、呼び出した構造体で@ObservedObjectでインスタンスをする。(クラスを宣言する

プロトコルとは少し名前が違うので注意! ObservableObjectとObservedObject)

 

実際の処理を書いてみる

ではコードを載せて解説します。

新しくクラス用のファイルを作ります。

Calculation.swift↓

import Foundationclass Calculation: ObservableObject { // 計算結果の変数を共有します @Published var resultvalue: Int = 0  // 足算 func add() {  // 5を足す  resultvalue = resultvalue + 5 }  // 引き算 func subtraction() {  // 5をひく  resultvalue = resultvalue - 5 }  // 掛け算 func multiplication() {  // 2を足し、5をかける  resultvalue = (resultvalue + 2) * 5 }  // 割り算 func division() {  // 10をたし5でわる  resultvalue = (resultvalue + 10) / 5 }}

ContenView.swift↓

import SwiftUIstruct ContentView: View {  // インスタンス生成 @ObservedObject var contenresult = Calculation()  var body: some View {  VStack {Text("\(self.contenresult.resultvalue)")Button(action: { self.contenresult.add()}) { Text("足算")}Button(action: { self.contenresult.subtraction()}) { Text("引き算")}Button(action: { self.contenresult.multiplication()}) { Text("掛け算")}Button(action: { self.contenresult.division()}) { Text("割り算")}Button(action: { self.contenresult.resultvalue = 0}) { Text("値クリア")}  } }}

コードの説明

足算、引き算、掛け算、割り算でそれぞれ出す値を変えて確かめています。

そして、Textに表示するのはクラスで宣言したself.contenresult.resultvalueを使用。

これで共有できていることがわかります!

まとめ

ObservableObjectを使うと非常に便利です。これを使いこなせば様々な処理ができますし、

同じ処理を何度も使わなくてすみます。

コードを少なく書けるのは非常に魅力的ですよね!

最新情報をチェックしよう!
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments