728x90
@State에 이은 두번째.
ObservableObject와 @ObservedObject는 SwiftUI에서 ViewModel구조를 사용할때 유용하다.
ObservableObject를 채택하면 클래스의 내부속성의 변경사항을 구독자에게 전달할수 있는 객체가 된다.
오로지 클래스에만 사용이 가능하다.
class SomeViewModel: ObservableObject {
@Published var myName: String = ""
}
그리고 뷰 모델에서 변경 가능한 속성을 선언하기 위해 @Published 속성 래퍼를 사용해야 한다.
@Published는 ObservableObject 프로토콜을 준수하는 클래스에 속성을 감시할수 있도록 하는 프로퍼티 래퍼다.
SwiftUI를 사용한 MVVM구조에서 View, ViewModel을 구현한다면 아래와 같다.
class ContentViewModel: ObservableObject {
@Published var myName: String = ""
}
struct ContentView: View {
@ObservedObject var vm = ContentViewModel()
var body: some View {
VStack() {
Text("내 이름은 \(vm.myName) 입니다.")
.padding()
HStack() {
Spacer(minLength: 20)
TextField("이름을 입력하세요.", text: $vm.myName)
Spacer(minLength: 20)
}
}
}
}
여기서 @ObservedObject는 뷰 모델을 관찰하는데 사용한다. 다른 용도로서의 사용은 자유롭게 하자.
@ObservedObject로 선언된 속성에 대해 인스턴스를 참조하고 해당 객체에서 발생하는 변경사항을 받을 수 있다.
728x90
'난 iOS개발자 > SwiftUI' 카테고리의 다른 글
Alert (0) | 2023.09.04 |
---|---|
@Binding 변수 포함된 View의 PreviewProvider 사용 (0) | 2023.05.21 |
[SwiftUI] @State (1) | 2023.02.21 |