SwiftUI/SwiftUI 문법

[SwiftUI] @EnvironmentObject 알아보기

hyunjuntyler 2023. 5. 20. 19:30

SwiftUI 에서는 많은 변수들을 사용하게 된다. 그리고 뷰간에 많은 데이터가 오가게 될 것이다. 또한 어떠한 데이터는 앱 전체에 사용된다. 이때 유용한 것이 @EnvironmentObject 이다. 시작하기에 앞서 코드는 아래에서 설명했을 때 쓴 코드를 사용할 것이다,

 

[SwiftUI] @Published, @ObservedObject 알아보기

시작하기에 앞서... 이 글은 @Published, @ObservedObject 을 아주~ 간단하게 설명한 글이다. 기본적인 것부터 알아두고 심도있게 들어가는것이 맞는 것 같다. (Combine 프레임워크, ViewModel... 등 공부가 필

codingnest.tistory.com

@EnvironmentObject

@EnvironmentObjectObservableObject 프로토콜을 준수하는 클래스나 구조체가 필요하다. 따라서 아래와 같은 Count 구조체를 만들어 주었다.

그리고 아래와 같이 ContentView 도 만들어 주었다. 이제 @ObservedObject@EnvironmentObject 로 바꿔줄 것이다.

@EnvironmentObject@EnvironmentObject var count: Count 형식으로 쓴다. 하지만 그렇게만 쓰면 아래와 같은 오류를 만날 수 있다. @EnvironmentObject 를 쓰기 위해서는  environmentObject(_:) 를 사용하여 어떠한 데이터를 공유할 것인지를 알려줘야 한다.

MyApp 구조체에서 .environmentObject(Count()) 를 사용하여 Count()ContentView 에 적용시킨다.

지금은 뷰 하나정도만 사용을 하게 되어 @EnvironmentObject 의 쓰임새가 와닿지는 않지만, 직접 써보면서 이 property wrapper 가 언제 필요할지 살펴봐야 할 것 같다.

결론

앱 전체에서 사용되는 데이터를 관리하는 것이 @EnvironmentObject 이다. 하지만 앱의 가독성과 유지보수를 고려하여 적절하게 사용하는 것이 좋다.