inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

강의 코드

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

해결된 질문

134

rrlasnsn

작성한 질문수 1

1

안녕하세요. 강의 유익하게 들었습니다!

지금 마지막까지 강의를 다 듣고 코드 작성도 완료한 상태인데,

현재는 ProfileEditingView에서 정보 수정 후, 피드에 수정된 유저의 정보가 바로 반영되지 않는 상태입니다.

저는 프로필 수정 후 피드에 수정된 유저 정보가 바로 반영 되도록 추가적으로 작업을 하려고 하는데, 가장 최선의 방법이 무엇일지 궁금합니다.

현재로선 FeedCellView에 .onAppear를 걸어서 내부에 유저 정보를 한 번 더 가져오는 식으로 작성하거나, 아니면 새로고침을 했을 때만 가져오는 방법을 생각했는데, 이렇게 하면 모든 게시물에서 유저 정보를 업데이트 해야해서 그만큼 딜레이가 많이 발생하는 문제점이 있어 또 다른 나은 방법이 있을지, 이게 최선인지 알고싶습니다! 감사합니다.

 

ios firebase swiftui mvvm

답변 2

1

밤낮 코딩

안녕하세요
rrlasnsn님

앱을 개선하고 계시다니, 먼저 대단하시다는 말 드리고 싶네요 ㅎㅎ

앱 개선하는게 개발공부에 정말 도움이 많이 되는데, 저도 공부할때 잘 안하게 되더라고요.

 

아무튼 본론으로 넘어와서, 제 강의 코드에서는 프로필 편집화면에서 사용자 이름을 수정해도, 피드뷰로 갔을때 수정된 사용자 이름이 제대로 뜨지 않는 문제가 있네요.

 

말씀해주신대로 2가지 방법 다 좋은 해결책이 될 수 있을 것 같습니다. 둘 중 아무방식으로 구현하셔도 될거 같은데요.

답변을 드리면, onAppear로 구현하나 새로고침을 전부 가져오나 둘 다 업데이트하는 셀의 갯수는 크게 차이나지 않을거에요. onAppear를 하면 말씀하신대로 보여지는 셀만 업데이트 합니다. 그리고 전체를 업데이트한다고 해도, LazyVStack은 셀이 보여지거나, 곧 보여질것 같을때 생성하기 때문에 모든 셀을 다 재생성하지는 않을거에요. 그래서 두 방법이 비슷한 리소스를 사용할 것으로 보여집니다.
또 궁금한 사항 생기시면 질문주세요. 감사합니다~!

1

rrlasnsn

자세히 답변 해 주셔서 감사합니다!! ㅎㅎ 강의 잘 들었습니다!!

0

밤낮 코딩

감사합니다! :D

0

인프런 AI 인턴

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

사용자가 프로필을 수정한 후 이러한 변경 사항이 즉시 피드에 반영되도록 구현하는 방법에 대해 고민 중이시군요. 일반적으로 SwiftUI 및 MVVM 아키텍처에서는 상태 관리 및 데이터 바인딩을 통해 이러한 업데이트를 처리할 수 있습니다.

  1. 데이터 바인딩 활용:

    • MVVM 패턴에서는 ViewModel의 상태가 변경될 때 View가 자동으로 업데이트되도록 설계하는 것이 좋습니다. 이를 위해 @Published 속성을 사용하여 프로필 데이터가 업데이트될 때 구독된 View가 자동으로 업데이트되도록 할 수 있습니다.
  2. 옵저버 사용:

    • Firebase를 사용 중이라면, Firebase Firestore의 실시간 데이터 동기화 기능을 사용할 수 있습니다. 데이터베이스에 있는 유저 정보가 변경될 때마다 자동으로 뷰모델의 데이터를 갱신하여 View가 이에 맞춰 리렌더링되도록 할 수 있습니다.
  3. 최적화 기법:

    • 모든 피드를 업데이트하기보다는 특정 유저의 변경된 정보만 갱신할 수 있도록 최적화하는 것이 중요합니다. 예를 들어, MongoDB aggregate 또는 Firestore에서 특정 조건에 맞는 유저 데이터만 옵저빙하도록 설정하는 방법을 고려해볼 수 있습니다.

이와 같은 방법을 적용하면, 사용자 경험을 최적화하면서도 효율적인 데이터 업데이트를 보장할 수 있을 것입니다.

또한, 다음의 관련된 게시글도 도움이 될 수 있습니다:
- @Bindable VS @Environment + @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

바인딩하는 이유

1

94

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

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

1

301

3

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

1

217

3

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

1

166

2

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

0

106

2

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

1

296

2