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

rrlasnsn님의 프로필 이미지
rrlasnsn

작성한 질문수

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

강의 코드

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

해결된 질문

작성

·

28

1

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

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

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

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

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

 

답변 2

1

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

안녕하세요
rrlasnsn님

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

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

 

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

 

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

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

rrlasnsn님의 프로필 이미지
rrlasnsn
질문자

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

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

감사합니다! :D

0

안녕하세요, 인프런 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의 사용 차이점 설명

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

rrlasnsn님의 프로필 이미지
rrlasnsn

작성한 질문수

질문하기