- 책 검색&담기 어플을 실습하는 도중에 담기 기능을 구현하는 데에 문제가 발생했다. 책을 담기 버튼으로 저장했는데, 담은 책 탭에 추가한 책이 바로 반영되지 않는 현상이 나타났다. 앱을 종료 후 다시 실행하면 정상적으로 나타났기에 저장 자체는 잘 되는 것 같은데..
담기를 누르면..
![]()
아무것도 보이지 않는다..
![]()
앱을 재실행하면 저장은 되어있는 것 확인.
![]()
- CoreData에 저장은 되었지만, 저장 이후 UI 갱신이 이루어지지 않았던 것이 문제였다.
담은 책 화면(SavedBookViewController)의 UICollectionView는 화면이 viewWillAppear() 될 때 fetchSavedBooks()를 호출하고 있었는데,
모달 형식으로 띄운 DetailViewController가 dismiss될 때 이 호출이 보장되지 않으면 책 목록이 갱신되지 않는 것이다.@objc func putBook() { ... dismiss(animated: true) { self.delegate?.didDismissDetail() } }
- 또한, dismiss 시점에서 컬렉션뷰를 reload 해주는 코드가 빠져있었던 것도 한몫했다.
func didDismissDetail() { fetchSavedBooks() }
- 처음에는 CoreData 쪽에 문제가 있나 싶었는데, 문제는 데이터가 아닌 화면 갱신 쪽이었다..!
데이터 저장과 UI 갱신은 각각의 흐름으로 관리해야 된다는 걸 알게 되었다!