[SwiftUI] @EnvironmentObject 알아보기
SwiftUI 에서는 많은 변수들을 사용하게 된다. 그리고 뷰간에 많은 데이터가 오가게 될 것이다. 또한 어떠한 데이터는 앱 전체에 사용된다. 이때 유용한 것이 @EnvironmentObject 이다. 시작하기에 앞서 코드는 아래에서 설명했을 때 쓴 코드를 사용할 것이다,
[SwiftUI] @Published, @ObservedObject 알아보기
시작하기에 앞서... 이 글은 @Published, @ObservedObject 을 아주~ 간단하게 설명한 글이다. 기본적인 것부터 알아두고 심도있게 들어가는것이 맞는 것 같다. (Combine 프레임워크, ViewModel... 등 공부가 필
codingnest.tistory.com
@EnvironmentObject
@EnvironmentObject 도 ObservableObject 프로토콜을 준수하는 클래스나 구조체가 필요하다. 따라서 아래와 같은 Count 구조체를 만들어 주었다.
그리고 아래와 같이 ContentView 도 만들어 주었다. 이제 @ObservedObject 를 @EnvironmentObject 로 바꿔줄 것이다.
@EnvironmentObject 는 @EnvironmentObject var count: Count
형식으로 쓴다. 하지만 그렇게만 쓰면 아래와 같은 오류를 만날 수 있다. @EnvironmentObject 를 쓰기 위해서는 environmentObject(_:)
를 사용하여 어떠한 데이터를 공유할 것인지를 알려줘야 한다.
MyApp 구조체에서 .environmentObject(Count())
를 사용하여 Count()
를 ContentView 에 적용시킨다.
지금은 뷰 하나정도만 사용을 하게 되어 @EnvironmentObject 의 쓰임새가 와닿지는 않지만, 직접 써보면서 이 property wrapper 가 언제 필요할지 살펴봐야 할 것 같다.
결론
앱 전체에서 사용되는 데이터를 관리하는 것이 @EnvironmentObject 이다. 하지만 앱의 가독성과 유지보수를 고려하여 적절하게 사용하는 것이 좋다.