Project/Record

[SwiftUI Project] 데이터 삭제 후, 이미지만 업데이트 되지 않는 문제

내일은개발천재🎵 2023. 1. 1. 21:48

issue 내용

 

[Fix] view dismiss 후 리스트 업데이트 · Issue #77 · DeveloperAcademy-POSTECH/MC2-Team7-Larasy

버그 설명 게시글 삭제 후 이전 화면으로 되돌아왔을 때, 리스트가 업데이트 되지 않는 이슈 존재 접근 단계 글을 2개 이상 작성해주세요 제일 처음에 있는 글을 삭제해주세요 -> 삭제된 이미지

github.com

  • 총 3개의 기록이 있다고 가정한다.
    • 2번째 기록을 삭제하였는데, 이미지가 업데이트 되지 않는 문제가 존재한다.

문제 해결 과정

  1. Coredata 문제인가?
    → 아니다! Text(음악 제목)은 제대로 출력되는 모습을 볼 수 있기 때문이다.
  2. Coredata에 이미지 저장 방식때문 아닐까?
    → 아니다! 현재 URL (String)값을 저장하고 있기 때문이다.
  3. URL Image를 불러오는 과정에서 발생한 문제구나!

해결 방법

  • 기존에 직접 URL 이미지를 불러왔었는데, 이렇게 하지 않고 iOS15부터 사용가능한 AsyncImage를 사용해서 해결했다.
AsyncImage(url: URL(string: urlString)) { image in
             image
                 .resizable()
                 .aspectRatio(contentMode: .fill)
                 .background(.gray)

         } placeholder: {
             Color.titleLightgray
         }

결과 화면

https://github.com/DeveloperAcademy-POSTECH/MC2-Team7-Larasy/pull/86

 

[Feat] 수정 후 리스트 업데이트 안 되는 문제 해결 by JIWON1923 · Pull Request #86 · DeveloperAcademy-POSTECH/M

Keychanges 음악 삭제 후, 이미지가 새로고침되도록 변경하였습니다. closes #77 Screenshots after.mov To Reviewer 문제가 생긴 이유 변경된 URL 이미지가 호출하지 않아서! (coredata 문제인 줄 알았는데 아니더

github.com


회고

- 문제가 일어난 이유를 분석하는게 가장 중요한 것 같다.
- 사실 코어데이터에 이미지만 제대로 삭제가 안되나? 하는 의구심을 가졌다. 
  (그래서 MVVM으로도 바꿔보려고 하고 뷰 리프레시 하는 방법 / 이미지만 리프레시 안돼요~ 로 검색 엄청 했다)
  조금만 더 침착하게 분석했으면 됐는데!!!!
  특히 URLImage는 내가 만든건데, SwiftUI에서 기본으로 제공하는 컴포넌트인줄알고 코드 보지도 않음ㅠㅠ (코드 관리의 중요성)

결론!
- 코드를 톺아보자.
- 재사용되는 컴포넌트 / 직접 만든 컴포넌트는 분리해서 관리하자!!!!!!!!!!!!ㅠㅠ

추후 할 일

사실 우리 앱은 15.5부터 지원해서 AsyncImage를 그냥 사용하면 해결되긴 하지만, 예전 코드에 공부할 부분이 많이 보인다. 특히 Data를 사용하는데, 비동기처리를 하지 않았었다!! (개념공부가 중요한 이유) 딱 저거 해결하고 오늘 동기 비동기 공부했는데 진짜 소름이 쫙 끼쳤다!!!