inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

바인딩하는 이유

해결된 질문

94

최지한

작성한 질문수 2

1

ProfileEditingView에서 뷰모델을 ProfileView에서 바인딩 받아서 사용하는데, 왜 바인딩을 받는 것일까요? ProfileEditingView에서 @State var viewModel = ProfileViewModel()로 새로 선언하지 않는 이유가 있을까요?

ios firebase swiftui mvvm

답변 2

1

밤낮 코딩

안녕하세요 최지한님!

회사일이 바빠 답변이 좀 늦었습니다. ㅜㅜ 죄송합니다.

두 뷰를 하나의 데이터로 표현하기 위해 그렇습니다.

프로필뷰모델을 각각 생성하면, 한쪽에서는 수정했는데, 다른한쪽에서는 수정이 안되는경우가 있을 수 있거든요.

그래서 하나의 뷰모델로 같이 사용하기 위해 바인딩을 하였습니다.

 

새해 복 많이 받으세요~!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 최지한님.

뷰모델을 바인딩하는 이유는 데이터의 일관성과 실시간 업데이트 때문입니다. SwiftUI에서 @State@Bindable로 바인딩을 하면, 데이터가 변경될 때마다 UI가 자동으로 업데이트되는 이점이 있습니다. 이 방식은 특히 여러 뷰가 동일한 데이터를 공유할 때 일관성을 유지하는 데 유리합니다.

ProfileEditingView에서 @State var viewModel = ProfileViewModel()로 새로 선언하지 않는 이유는 데이터의 중복과 비효율성을 방지하기 위함입니다. 동일한 데이터가 여러 곳에서 중복 관리되면 데이터 동기화에 문제가 생길 수 있고 유지보수 측면에서도 어려움을 겪게 됩니다. 따라서 한 곳에서 데이터와 로직을 관리하고, 필요한 곳에서 바로 바인딩하여 사용하는 것이 바람직합니다.

관련된 질문과 답변을 확인할 수 있는 URL을 아래에 첨부합니다.

  1. @State와 @Bindable의 사용 차이점 설명 - @State@Bindable 사용 시 각각의 역할과 데이터 처리를 어떻게 해야 하는지에 대해 설명하고 있습니다.

이해에 도움이 되셨기를 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다. 🙏

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다.

searchable이 화면 하단에 위치해요

0

60

2

warning 하나가 있는 것 같습니다. 해결방법좀 알려주세요

0

79

2

설계 관련하여 참고할 문서나 예제 공유가 가능할까요?

1

71

2

Thread number가 다 1로 나옵니다

1

69

2

'loadAllPosts' 를 매번 사용해야 하나요?

1

69

2

75강 실시간으로 팔로우수 안늘어나는 이유?

1

135

3

예전코드도 배워야 할까요?

1

137

1

ProfileView에서 toolbar이용시 문제점 발생, 로직이 이해가 되지 않습니다.

0

161

1

62강 Follow, Unfollow기능구현에서,,

0

107

2

애구마선생님, 다음 프로젝트 강의는 언제 올려주세요???

0

108

2

51강 10:22에서 이미지 여러장이 나오지 않아요;;

0

108

2

52강 post데이터가 불러와지지 않아요,,,

0

135

2

ViewModel과 Model 구분 (30강)

1

133

2

75강 까지 마무리후 소스 오류 사항 문의

0

109

1

SwiftUI main actor 관한 경고 계속 뜹니다.

1

245

2

45강의 에서 Kingfisher 사용후 발생하는 swift6 이슈

1

152

2

19강에서 Encoder()를 사용할 수 없습니다.

1

135

2

40. 강에서 정상작동 안합니다.

0

168

3

프로필 수정 후 변경된 내용을 피드에 바로 반영되도록 하고 싶습니다.

1

134

2

15강에서 발생한 문제에 대해서 질문이 있습니다!

1

301

3

13강 코드 작성 후 피드의 유저 데이터가 보이지 않는 문제

1

217

3

혹시 다음 강의 대략 언제쯤 완료되시는지 알 수 있을까요??

1

166

2

섹션7 뷰 리팩토링 질문있습니다.

0

106

2

firebase에서 데이터를 불러오는데 오류가 발생합니다.

1

296

2