iCloud 연동 기능을 키고 난 뒤 fetch 요청을 보내어 바로 업데이트가 되는지 테스트를 해보고자 했습니다.
하지만 fetch를 시도하니 store가 tear down 되었다는 오류와 함께 fetch가 동작하지 않았습니다.
이 문제는 앱을 종료하고 다시 실행하면 initial fetch가 동작하였기 때문에 iCloud 연동 기능을 켰을 때 앱을 재시작 해야되는 줄 알았습니다.
하지만 우연히 sync 버튼을 또 누르니 그때는 재실행을 하지 않아도 반영되는 것을 알 수 있었습니다…!
그래서 추측하기로는 container를 다시 생성해주면서 coreData
와 CloudKit
을 연동하는데 시간이 걸려서 Store를 만드는 데 시간이 걸리지 않는가? 하는 생각을 하여 임시로 만든 sync 함수에서 CloudKit
을 on
한 뒤 fetch 해오는 요청 사이에 5초의 Sleep을 줘 봤습니다.
func syncOnOffset(isSyncOnOff: Bool) async throws {
retrospectStorage = CoreDataManager(isSync: isSyncOnOff, name: "RetsTalk", completion: { _ in
})
retrospects = []
try await Task.sleep(nanoseconds: 10_000_000_000) // 10 sec
try await fetchinitRetrospects(offset: 0, amount: 10)
}
위 결과로 실시간 적용이 된다는 것을 알 수 있었습니다 :)