인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

zergppp님의 프로필 이미지
zergppp

작성한 질문수

Part2: 초중급 iOS 인스타그램 클론(SwiftUI, MVVM, Firebase, 2024)

40. 프로필뷰, 프로필 편집뷰의 ViewModel 만들기

39강 ProfileViewModel 연결할때 궁금합니다.(초보)

해결된 질문

작성

·

132

0

잘 알고 넘어가야 할 것 같아서 질문해요.

ProfileView에는

@State var viewModel = ProfileViewModel()

 

ProfileEditingView에는

@Bindable var viewModel : ProfileViewModel

 

클래스 연결할땐 @Bindable이라 하셨는데 첫번째에도 연결할때 클래스 연결하는거니 @Bindable 써야하는거 아닌가여? 같은 클래스를 적용하는데 다르게 하는 이유가 궁금하고,

@State var viewModel = ProfileViewModel()

@Bindable var viewModel : ProfileViewModel

하나는 변수에 담는 식이고, 하나는 타입식으로 한건지 궁금해요. 제가 초보라 질문이 엉뚱할 수 있는데 궁금해요~

답변 1

1

애구마(agmma)님의 프로필 이미지
애구마(agmma)
지식공유자

zergppp님 안녕하세요!

@Observable 클래스를 생성할때는 @State를 사용하고 @State 클래스를 다른 뷰에서 전달받을때는 @Bindable을 사용합니다.

 

ProfileView에서는 ProfieViewModel을 생성하는거라

@State var viewModel = ProfileViewModel() 이렇게 코딩하고요

참고로 괄호'()' 이게 생성하는 기호입니다.

 

다음 뷰인 ProfileEditingView에서는 이미 ProfileView에서 생성한 ProfileViewModel을 전달받아서 갖고 있는거라 생성하는게 아닌

@Bindable var viewModel : ProfileViewModel 이렇게 변수를 연결할 자리를 만들어놓기만 해놓은 겁니다.

그리고 전달은 ProfileEditingView(viewModel: viewModel) 이렇게 전달하는 부분에서 @State로 생성한 클래스를 전달해 준거고요.

이렇게 전달하면 @Bindable로 만들어놓은 변수자리에 잘 세팅이 됩니다.

감사합니다!

zergppp님의 프로필 이미지
zergppp

작성한 질문수

질문하기