코어데이터는 애플의 데이터 관리 프레임워크이다.
데이터를 객체로 관리하며, 데이터의 저장, 검색, 정렬 등을 쉽게 처리할 수 있고,
SQLite와 같은 데이터베이스를 사용하지만 직접 SQL 쿼리를 작성하지 않고도 객체 지향적으로 데이터를 다룰 수 있다고 한다.
코어데이터는 다음과 같은 주요 개념으로 구성된다.
Person
이라는 엔티티는 사람의 정보를 저장하는 테이블이다.Person
엔티티의 어트리뷰트는 name
, age
, email
등이 될 수 있다.Person
엔티티와 Passport
엔티티 간의 관계를 설정할 수 있다.Person
엔티티의 매니지드 오브젝트는 Person
클래스의 인스턴스이다.save()
메서드를 호출하여 저장한다..xcdatamodeld
파일을 통해 시각적으로 설계할 수 있다.객체 지향적 접근
데이터를 객체로 관리하여 직관적이다.
데이터 일관성
역관계(Inverse Relationship)와 삭제 규칙(Delete Rule)을 통해 데이터의 일관성을 유지한다.
자동화된 관리
데이터의 저장, 검색, 정렬 등을 자동으로 처리한다.
성능 최적화
메모리 관리와 지연 로딩(Lazy Loading)을 통해 성능을 최적화한다.
// 1. 코어데이터 스택 설정
let container = NSPersistentContainer(name: "Model")
container.loadPersistentStores { (storeDescription, error) in
if let error = error as NSError? {
fatalError("코어데이터 로드 실패: \(error), \(error.userInfo)")
}
}
// 2. 매니지드 오브젝트 컨텍스트 가져오기
let context = container.viewContext
// 3. 새로운 매니지드 오브젝트 생성
let person = Person(context: context)
person.name = "김코더"
person.age = 25
// 4. 데이터 저장
do {
try context.save()
print("데이터 저장 성공!")
} catch {
print("데이터 저장 실패: \(error)")
}
역관계 설정
릴레이션십을 설정할 때 역관계를 꼭 추가해야 데이터 일관성이 유지된다.
삭제 규칙
릴레이션십의 삭제 규칙을 적절히 설정하여 데이터 무결성을 보장한다.
성능 최적화
대량의 데이터를 처리할 때는 배치(Batch) 작업을 사용한다.
디버깅
코어데이터의 SQLite 저장소를 직접 확인하려면 NSPersistentStoreCoordinator
를 활용한다.
코어데이터는 애플 플랫폼에서 데이터를 효율적으로 관리할 수 있다.
객체 지향적인 접근 방식과 자동화된 관리 기능을 통해 복잡한 데이터 모델도 쉽게 다룰 수 있다.
배우는게 힘들지만 한 번 익히면 데이터 관리가 훨씬 편리해진다고하니 코어데이터를 잘 활용하면 앱의 성능과 안정성을 크게 향상시킬 수 있을 것이다.