[SwiftUI] ObservableObject, @Published, @ObservedObject

최승원·2022년 6월 6일
0

TIL (Today I Learned)

목록 보기
18/21

ObservableObject를 통해 View와 View Model을 바인딩하는 방법에 관한 설명이다.

ObservableObject

프로토콜 ObservableObject를 클래스에 채택하면 해당 클래스의 인스턴스를 관찰하고 있다가 값이 변경되면 뷰를 업데이트한다.

@Published

@Published로 선언된 프로퍼티가 ObservableObject에 포함되어 있다면 해당 프로퍼티가 업데이트 될 때마다 뷰도 업데이트 된다.

@ObservedObject

ObservableObject를 구독하고 값이 업데이트 될 때 마다 뷰를 갱신한다.

코드 예시

class ObservableList: ObservableObject {
    @Published var list: [String] = []
}

struct ContentView: View {
    @ObservedObject var list = ObservableList()
    
    var body: some View {
    	 List(list.list, id: \.self) { item in
                Text(item)
         }
    }
}
profile
문의 사항은 메일로 부탁드립니다🙇‍♀️

0개의 댓글