프로필 수정 후 변경된 내용을 피드에 바로 반영되도록 하고 싶습니다.
안녕하세요. 강의 유익하게 들었습니다!
지금 마지막까지 강의를 다 듣고 코드 작성도 완료한 상태인데,
현재는 ProfileEditingView에서 정보 수정 후, 피드에 수정된 유저의 정보가 바로 반영되지 않는 상태입니다.
저는 프로필 수정 후 피드에 수정된 유저 정보가 바로 반영 되도록 추가적으로 작업을 하려고 하는데, 가장 최선의 방법이 무엇일지 궁금합니다.
현재로선 FeedCellView에 .onAppear를 걸어서 내부에 유저 정보를 한 번 더 가져오는 식으로 작성하거나, 아니면 새로고침을 했을 때만 가져오는 방법을 생각했는데, 이렇게 하면 모든 게시물에서 유저 정보를 업데이트 해야해서 그만큼 딜레이가 많이 발생하는 문제점이 있어 또 다른 나은 방법이 있을지, 이게 최선인지 알고싶습니다! 감사합니다.
답변 2
1
안녕하세요
rrlasnsn님
앱을 개선하고 계시다니, 먼저 대단하시다는 말 드리고 싶네요 ㅎㅎ
앱 개선하는게 개발공부에 정말 도움이 많이 되는데, 저도 공부할때 잘 안하게 되더라고요.
아무튼 본론으로 넘어와서, 제 강의 코드에서는 프로필 편집화면에서 사용자 이름을 수정해도, 피드뷰로 갔을때 수정된 사용자 이름이 제대로 뜨지 않는 문제가 있네요.
말씀해주신대로 2가지 방법 다 좋은 해결책이 될 수 있을 것 같습니다. 둘 중 아무방식으로 구현하셔도 될거 같은데요.
답변을 드리면, onAppear로 구현하나 새로고침을 전부 가져오나 둘 다 업데이트하는 셀의 갯수는 크게 차이나지 않을거에요. onAppear를 하면 말씀하신대로 보여지는 셀만 업데이트 합니다. 그리고 전체를 업데이트한다고 해도, LazyVStack은 셀이 보여지거나, 곧 보여질것 같을때 생성하기 때문에 모든 셀을 다 재생성하지는 않을거에요. 그래서 두 방법이 비슷한 리소스를 사용할 것으로 보여집니다.
또 궁금한 사항 생기시면 질문주세요. 감사합니다~!
0
안녕하세요, 인프런 AI 인턴입니다. rrlasnsn님.
사용자가 프로필을 수정한 후 이러한 변경 사항이 즉시 피드에 반영되도록 구현하는 방법에 대해 고민 중이시군요. 일반적으로 SwiftUI 및 MVVM 아키텍처에서는 상태 관리 및 데이터 바인딩을 통해 이러한 업데이트를 처리할 수 있습니다.
데이터 바인딩 활용:
- MVVM 패턴에서는 ViewModel의 상태가 변경될 때 View가 자동으로 업데이트되도록 설계하는 것이 좋습니다. 이를 위해
@Published속성을 사용하여 프로필 데이터가 업데이트될 때 구독된 View가 자동으로 업데이트되도록 할 수 있습니다.
- MVVM 패턴에서는 ViewModel의 상태가 변경될 때 View가 자동으로 업데이트되도록 설계하는 것이 좋습니다. 이를 위해
옵저버 사용:
- Firebase를 사용 중이라면, Firebase Firestore의 실시간 데이터 동기화 기능을 사용할 수 있습니다. 데이터베이스에 있는 유저 정보가 변경될 때마다 자동으로 뷰모델의 데이터를 갱신하여 View가 이에 맞춰 리렌더링되도록 할 수 있습니다.
- Firebase를 사용 중이라면, Firebase Firestore의 실시간 데이터 동기화 기능을 사용할 수 있습니다. 데이터베이스에 있는 유저 정보가 변경될 때마다 자동으로 뷰모델의 데이터를 갱신하여 View가 이에 맞춰 리렌더링되도록 할 수 있습니다.
최적화 기법:
- 모든 피드를 업데이트하기보다는 특정 유저의 변경된 정보만 갱신할 수 있도록 최적화하는 것이 중요합니다. 예를 들어, MongoDB aggregate 또는 Firestore에서 특정 조건에 맞는 유저 데이터만 옵저빙하도록 설정하는 방법을 고려해볼 수 있습니다.
- 모든 피드를 업데이트하기보다는 특정 유저의 변경된 정보만 갱신할 수 있도록 최적화하는 것이 중요합니다. 예를 들어, 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





