좋아요와 댓글 기능을 구현하던 중에 생각지도 못한 문제가 발생했습니다..!
바로 댓글의 숫자가 자기 마음대로..? 표시된다는 거였는데요
(이렇게 내부 디테일뷰에서는 댓글 갯수가 정상적으로 나오지만, 스크롤뷰로 나오면 댓글 갯수가 그때그때 달라집니다..)
정말 앱을 만들다보니 생각지도 못한 버그들이 너무 많네요...
좋아요는 잘 표시되는데 댓글 개수만 달라져서 더 이상하다고 생각하고 있었는데요
이것 저것 바꿔보아도 잘 되지 않아서 하루 이틀 이것저것 찾아보고, 다른 조원이랑 이야기도 나누면서 뭐가 문제인지 고민했던 것 같아요..
그런데 생각지도 못한 부분에 문제가 있었습니다..!
작성했던 좋아요와 댓글의 코드를 보면
commentStore.commentList.count로 각 cell마다 가지고 있는 commentStore의 commentList로 접근해 count를 가지고 오는데요
문제는 데이터를 다루는 방식에 있었습니다.
앱을 처음 만들때
@State나 @ObservableObject는 이동하는 뷰 마다 데이터를 바인딩해야된다는 점 때문에 뎁스가 깊어지면 번거롭다고 생각해서
전반적인 앱의 데이터는 @EnvironmentObject를 주로 활용하고 필요한 곳마다 접근하고 있었습니다.
App 레벨의 ContentView()에 활용하는 Store들을 .environmentObject로 초기화해서 연결하고,
ContentView()에 메인 탭뷰를 구성해 데이터를 가지고 전반적인 화면이동을 하도록 구성했었습니다.
이렇게 contentView에 탭바를 구성하면
전반적인 데이터 접근도 쉽고
유저가 로그인을 안했을때는 로그인뷰를, 로그인을 했을때는 메인 화면을 쉽게 띄울 수 있어서 좋다고 생각하고 있었는데
지금 같은 경우에는
cell의 내부 디테일 뷰에서도 EnvironmentObject로 데이터에 접근하고,
cell의 외부 스크롤뷰에서도 EnvironmentObject로 데이터에 접근하다보니 통일성을 잃고 뷰를 그리는 것 같았습니다.
https://developer.apple.com/documentation/swiftui/environmentobject
그래서 @StateObject로 각 cell마다 데이터를 초기화한 뒤 디테일 뷰로 데이터를 넣어주기로 했습니다.
https://developer.apple.com/documentation/swiftui/stateobject
이렇게 하니..!
다행스럽게도 댓글 숫자가 마음대로 바뀌지 않고 실제 숫자만큼 잘 표시되는 모습을 확인할 수 있었습니다.
@State, @ObservableObject, @EnvironmentObject, @StateObject는
SwiftUI를 공부하면서 많이 헷갈렸던 부분인데
프로젝트를 하면서 직접 써 보니 차이점을 알 수 있었던 것 같습니다.
데이터를 연동하는 부분에만 신경을 썼던 것 같은데
앞으로는 데이터를 연동하면서 뷰를 그리는 부분도 세세히 신경써서 만들어야 될 것 같습니다!
화이팅 화이팅!!!
'SwiftUI Project > SwiftUI Troubleshooting' 카테고리의 다른 글
[날씨의 i] WidgetKit 2탄! (서버와 데이터 연동하기, 위젯 구성하기) (0) | 2023.09.10 |
---|---|
[날씨의 i] 첫 WidgetKit 도전..! 험난했던 시작 (WidgetKit 추가와 AppGroup설정, UserDefaults로 데이터 공유) (0) | 2023.09.10 |
[부트캠핑] 스켈레톤뷰 애니메이션 넣기, 1.1 업데이트 성공! (SDWebImage) (1) | 2023.06.10 |
[부트캠핑] 댓글 작성하면서 자연스럽게 화면을 스크롤 하는 여정을 따라서..! (Custom ScrollView, ScrollView Reader) (0) | 2023.02.05 |
[부트캠핑] 이미지 로딩 개선! AsyncImage에서 SDWebImage로 변경 (0) | 2022.12.23 |