Core Data는 애플의 프레임워크로, iOS, macOS, watchOS, tvOS 앱에서 데이터 모델을 관리하고 영구 저장할 수 있도록 도와줍니다. 데이터베이스 역할을 하면서 객체와 관계를 관리하는 기능을 제공하는데, SQL 같은 데이터베이스 시스템을 직접 사용하는 대신, 객체 지향 방식으로 데이터를 관리할 수 있도록 돕는 레이어입니다.
주요 기능
- 객체 그래프 관리: Core Data는 객체 간의 관계를 관리할 수 있는 강력한 시스템을 제공합니다.
- 영구 저장: SQLite, Binary, XML 형식으로 데이터를 디스크에 저장할 수 있으며, 데이터의 영구성을 보장합니다.
- 자동 저장 및 페칭: 데이터를 자동으로 저장하거나 불러오는 기능을 제공하며, 이를 통해 복잡한 데이터 관리를 쉽게 처리할 수 있습니다.
- 효율적인 메모리 관리: Core Data는 메모리 내에서 관리해야 할 데이터의 양을 줄이기 위해 필요한 데이터만 불러오고, 사용하지 않는 데이터는 자동으로 메모리에서 해제합니다.
- 버전 관리: 데이터 모델의 스키마를 쉽게 변경하고, 데이터를 마이그레이션할 수 있습니다.
Core Data 구성 요소
- NSManagedObject: Core Data에서 데이터를 관리하는 객체입니다. 이 객체는 데이터베이스 레코드에 해당하며, 각 속성은 엔티티의 필드를 나타냅니다.
- NSManagedObjectModel: 애플리케이션의 데이터 모델을 정의하는 클래스입니다. 이 클래스는 데이터베이스의 스키마를 설명하며, 엔티티(테이블), 속성(컬럼), 관계 등을 포함합니다.
- NSPersistentStoreCoordinator: 영구 저장소와의 연결을 관리하는 역할을 합니다. 여러 저장소를 지원하며, SQLite, XML 등의 형식으로 데이터를 저장할 수 있습니다.
- NSManagedObjectContext: 메모리 내에서 데이터를 관리하는 컨텍스트입니다. 이 컨텍스트에서 데이터를 추가, 수정, 삭제, 조회할 수 있습니다. 데이터 변경이 완료되면 save() 메서드를 사용해 영구 저장소에 반영할 수 있습니다.
- NSPersistentContainer: Core Data 스택을 간단하게 설정할 수 있는 도우미 클래스입니다. 이 클래스는 NSManagedObjectContext, NSManagedObjectModel, NSPersistentStoreCoordinator를 한 번에 관리하며, 설정을 단순화합니다.
Core Data 사용 예시
import CoreData
// NSPersistentContainer 설정
let container = NSPersistentContainer(name: "MyModel")
container.loadPersistentStores { storeDescription, error in
if let error = error {
fatalError("Failed to load Core Data stack: \(error)")
}
}
// NSManagedObjectContext 가져오기
let context = container.viewContext
// 새로운 엔티티 객체 생성
let newEntity = NSEntityDescription.insertNewObject(forEntityName: "Person", into: context)
newEntity.setValue("John", forKey: "name")
newEntity.setValue(30, forKey: "age")
// 저장
do {
try context.save()
} catch {
print("Failed to save: \(error)")
}
// 데이터 불러오기
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Person")
do {
let result = try context.fetch(fetchRequest)
for data in result {
print(data.value(forKey: "name") as! String)
}
} catch {
print("Failed to fetch data: \(error)")
}
Core Data의 장점
- 자동 저장 및 페칭을 통해 많은 데이터를 다룰 때에도 효율적으로 처리.
- 데이터를 객체 지향적으로 다룰 수 있어서 Swift 코드와 자연스럽게 통합.
- 데이터 저장, 관리, 관계 설정 등을 유연하게 처리.
이러한 Core Data는 앱의 구조를 더욱 유연하게 만들어 주며, 데이터 관리를 쉽게 할 수 있게 해줍니다.
'programmer '프로그래머'' 카테고리의 다른 글
Xcode (1) | 2024.09.20 |
---|---|
프레임(Frame)과 바운즈(Bounds) 개념 (2) | 2024.09.19 |
Description (0) | 2024.09.12 |
indexPath (0) | 2024.09.11 |
스위프트 dismiss (0) | 2024.09.10 |