Combine,ObservableObjectとかよく分からなかったのでメモします。
SwiftUIとCombine: ObservableObjectの基本
SwiftUIとは?
SwiftUIは、SwiftによるネイティブUIの作成のための新しいフレームワークです。SwiftUIは、iOS、macOS、watchOS、そしてtvOS向けのアプリケーションのUIを簡単に構築することができます。
Combineとは?
Combineは、Swiftでの非同期プログラミングとストリームの処理をサポートするフレームワークです。Combineを使用すると、イベントやデータの流れをオブザーバブルなシーケンスとして扱い、変化に応じてUIを更新することができます。
ObservableObjectとは?
ObservableObjectはCombineフレームワークに属するプロトコルで、クラスのインスタンスの変更を監視可能にするものです。このプロトコルに従ったオブジェクトは、そのオブジェクト内で@Publishedプロパティラッパーがマークしたプロパティが変更されたときに変更を通知します。
簡単な具体例:
以下は、ObservableObjectと@Publishedを使用した簡単な例です。
import SwiftUI
import Combine
class UserData: ObservableObject {
@Published var username = ""
@Published var isLoggedIn = false
}
struct UserView: View {
@ObservedObject var userData = UserData()
var body: some View {
VStack {
Text("Username: \(userData.username)")
Toggle(isOn: $userData.isLoggedIn) {
Text("ログインステータス")
}
}
}
}
上記の例で、UserDataクラスはObservableObjectプロトコルに準拠しており、usernameとisLoggedInの2つの@Publishedプロパティを持っています。これにより、これらのプロパティが変更されると、関連するUI部分が自動的に更新されます。