SwiftUI 기반의 가계부 앱에서 핵심 기능 중 하나는 데이터를 안전하게 저장하고 불러오는 것입니다. 이를 위해 Core Data를 사용하며, 이 글에서는 Entity 설계 및 관계 구성에 대해 다룹니다.
1. Core Data란?
Core Data는 애플이 제공하는 객체 지향 데이터 저장 기술입니다. iOS 앱에서 데이터를 영구적으로 저장하고, 효율적으로 관리할 수 있게 도와줍니다.
2. 필요한 Entity 정의
가계부 앱에서는 다음과 같은 엔티티를 정의합니다:
✅ Record (지출/수입 항목)
속성명 | 타입 | 설명 |
---|---|---|
id | UUID | 고유 식별자 |
date | Date | 거래 날짜 |
type | String | 수입/지출 구분 |
category | String | 카테고리 이름 |
amount | Double | 금액 |
memo | String? | 설명/메모 |
card | String? | 결제 수단 (현금, 카드 등) |
✅ AppCategory (사용자 정의 카테고리)
속성명 | 타입 | 설명 |
---|---|---|
id | UUID | 고유 식별자 |
name | String | 카테고리 이름 |
type | String | 수입/지출 구분 |
✅ Card (카드 관리용)
속성명 | 타입 | 설명 |
---|---|---|
id | UUID | 고유 식별자 |
name | String | 카드 이름 |
billingDay | Int16 | 결제일 (예: 매달 5일) |
3. Entity 간 관계 설정
이 앱은 간단한 구조로, Record가 AppCategory와 Card를 이름 기반으로 연결합니다. 실무에서는 관계(Relationship)를 사용할 수도 있지만, 간단한 앱에서는 문자열 키로 관리하는 것이 속도와 유지보수 측면에서 유리합니다.
4. 모델링 팁
- 모든
id
는 UUID로 자동 생성되도록 설정 category
,type
등의 필드는 검색/필터를 위한 Index 추가 추천- 앱 실행 시 샘플 데이터 삽입 옵션도 고려 가능 (개발 시 편리함)
5. 모델 생성 후 해야 할 일
.xcdatamodeld
파일에서 위 내용대로 Entity 추가Codegen
은 Manual/None으로 설정- 각 모델의 NSManagedObject 서브클래스 수동 생성:
Editor > Create NSManagedObject Subclass
선택
6. 마무리
SwiftUI 가계부 앱 개발기 3편 – 필터 기능 구현에서는 실제 앱 화면에서 Core Data를 사용해 데이터를 입력, 조회, 삭제하는 방법을 다룹니다.
시리즈 목록
- SwiftUI 가계부 앱 개발기 1편 – 프로젝트 생성과 폴더 구조 설계
- SwiftUI 가계부 앱 개발기 2편 – Core Data 모델 구성과 Entity 설계
- SwiftUI 가계부 앱 개발기 3편 – 필터 기능 구현
- SwiftUI 가계부 앱 개발기 4편 – 카테고리 관리 기능 구현
- SwiftUI 가계부 앱 개발기 5편 – 카드 관리 기능: 결제일 및 청구 주기 설정
- SwiftUI 가계부 앱 개발기 6편 – 통계 화면 구성: 월별 그래프 및 유형별 정리
- SwiftUI 가계부 앱 개발기 7편 – 다국어(Localization) 지원: 한국어/영어 국제화 처리
- SwiftUI 가계부 앱 개발기 8편 – iOS 앱 배포를 위한 설정: App Store 심사 준비
- SwiftUI 가계부 앱 개발기 9편 – UI 개선 및 사용자 경험(UX) 향상 전략