🩵 Core Data란?
Core Data는 앱의 데이터를 관리하는 똑똑한 비서같은 존재입니다!
앱에서 사용하는 모든 정보, 즉 사진, 메모, 설정 등을 안전하게 보관하고 필요할 때 꺼내 주는 역할을 하지요.
마치 우리 뇌의 기억 장치와 같은 존재라고 생각하면 쉽습니다.
1. 사용하기 쉽다
- 복잡한 데이터베이스 관리를 숨겨서 간단한 코드로 데이터를 저장하고 관리할 수 있도록 도움
- 마치 레고 블록처럼 다양한 데이터를 쉽게 조립하고 분해할 수 있음
2. 안전하고 신뢰할 수 있다
- 데이터 손실을 막기 위해 백업 기능을 제공하고, 여러 기기에서 동일한 데이터를 사용할 수 있도록 도움
- 앱이 갑자기 꺼지더라도 저장된 데이터는 안전하게 보호
3. 다양한 기능을 제공한다
- 오프라인에서도 데이터를 사용할 수 있음
- 인터넷 연결 없이도 앱을 사용할 수 있도록 데이터를 미리 저장
- 데이터를 빠르게 검색하고 필터링할 수 있음
- 필요한 정보를 쉽게 찾을 수 있도록 정리
4. 앱 성능을 향상시킨다
- 데이터를 효율적으로 관리하여 앱 속도를 높임
- 불필요한 데이터 처리를 줄여 앱 실행 시간을 단축
🩵 Core Data Model 생성하기
✔️ 1. Data Model 파일 생성
Core Data 섹션의 Data Model을 만들어주면~
프로젝트에 .xcdatamodeld파일이 포함됩니다.
✔️ 2. AppDelegate에 CoreData Stack 설정
앱의 모델 계층을 공동으로 지원하는 클래스를 설정합니다.
이러한 클래스를 통칭하여 Core Data Stack이라고 합니다.
1. 데이터 설계 - NSManagedObjectModel
- 앱의 유형, 속성 및 관계를 설명하는 앱의 모델 파일
- 앱에서 사용하는 데이터의 종류, 특징, 관계 등을 정의
- (ex) 건축 설계도
2. 데이터 관리 - NSManagedObjectContext
- 앱 유형 인스턴스의 변경 사항을 추적
- 실제 데이터를 저장하고 관리하는 공간
- (ex) 건축 현장 사무실
3. 데이터 저장 - NSPersistentStoreCoordinator
- 스토어에서 앱 유형의 인스턴스를 저장하고 읽어옴
- 데이터를 저장 장치에 안전하게 보관하는 역할
- (ex) 건축 완료 후 보관하는 창고
4. 편리한 솔루션 - NSPersistentContainer
- 모델, 컨텍스트, 매장 코디네이터를 모두 한 번에 설정
- 위의 세 가지 요소를 하나로 묶어 더욱 편리하게 사용할 수 있도록 도움
- (ex) 건축 설계부터 시공, 보관까지 한 번에 해주는 건설 회사
핵심 데이터 스택을 사용하면 앱의 데이터를 효율적이고 안전하게 관리할 수 있습니다.
ㄴ 코드로 Persistent Container 초기화
일반적으로 앱이 시작될 때 핵심 데이터를 초기화합니다.
이는 마치 앱을 처음 실행할 때 빈 캔버스를 준비하는 것과 같아요.
하지만 Persistent Container를 지연 변수로 생성하면 앱 실행 초기에 초기화를 연기할 수 있습니다.
앱 시작 속도를 높일 수 있는 좋은 방법입니다.
import CoreData
// MARK: - Core Data stack
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "YoutModel")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
// MARK: - Core Data Saving support
func saveContext() {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
- lazy var persistentContainer는 지연 변수입니다.
- 앱 시작 속도를 높일 수 있습니다.
- 메모리 사용량을 줄일 수 있습니다.
- NSPersistentContainer(name: "YourModel")은 앱의 모델 이름을 지정합니다.
- loadPersistentStores(completionHandler:)은 데이터 저장소를 로드합니다.
ㄴ 프로젝트 생성 시 설정 추가하기
새 Xcode 프로젝트를 생성할 때 Storage의 Core Data를 선택하여
템플릿에 설정 코드가 AppDelegate에 자동으로 포함되게 할 수 있어요
Core Data 파일 생성과 초기화 세팅을 마쳤습니다!
다음에는 간단한 CRUD(Create - Read - Update - Delete)를 진행해볼게요 😀
https://developer.apple.com/documentation/coredata/
https://developer.apple.com/documentation/coredata/creating_a_core_data_model
'iOS > Swift' 카테고리의 다른 글
[Swift] 위치 정보 접근 권한 (GPS) 요청하고 처리하기 (1) | 2024.02.14 |
---|---|
[Swift] iOS 스플래시 / 런치 스크린 화면 만들기 (0) | 2024.02.13 |
[Swift] filter() vs first() - 차이점, 시간복잡도, 디버깅 (1) | 2024.01.29 |
[Swift] 아키텍처 Architecture(1) - MVC 패턴 (1) | 2024.01.27 |
[Swift] 네트워크 통신(2) - URLSession(GET)과 Decodable 프로토콜 (1) | 2024.01.04 |