TimerRepository, SwiftDataManager

hyun·2025년 8월 27일
0

iOS

목록 보기
45/54

한 거

  • TimerRepository 프로토콜 정의
    → fetchAll, insert, update, delete 추상화로 CRUD 규격 확립

  • SwiftDataManager 구현
    → TimerRepository 채택, @Dependency(.modelContext)를 이용해 ModelContext 주입
    → 실제 SwiftData 기반의 CRUD 메서드 구현 완료

  • 에러 처리를 RepositoryError enum으로 정리
    → entityNotFound, saveFailed, fetchFailed 케이스 정의
    → LocalizedError 채택해 사용자 친화적인 에러 메시지 제공

  • 의존성 역전 : ViewModel이나 VC에서는 TimerRepository만 바라보므로, 저장소 구현체를 교체하거나 확장하기 쉬움

  • SwiftData FetchDescriptor 사용법:
    predicate와 sortBy 조합으로 원하는 조건과 정렬 적용 가능
    fetchLimit으로 단일 엔티티만 가져오는 최적화 가능

  • 에러 처리 일원화 : 다양한 CRUD 과정에서 발생할 수 있는 문제를 RepositoryError 하나로 캡슐화해 관리가 용이

처음에는 modelContext.save() 누락으로 데이터 반영이 안 됨 → try-catch 구문 추가
특정 엔티티 조회 시 fetchAll을 반복 호출하는 비효율 발견 → fetch(by:) 헬퍼 메서드로 리팩터링

0개의 댓글