[swift] Core Data 프레임워크를 사용한 데이터 저장 및 관리

Core Data는 iOS 및 macOS 애플리케이션에서 데이터를 저장하고 관리하기 위한 프레임워크입니다. Core Data를 사용하면 강력한 데이터 관리 기능을 간편하게 사용할 수 있으며, 객체 그래프 및 변경 추적과 같은 기능을 제공합니다.

이 기술 블로그에서는 Swift 프로그래밍 언어를 사용하여 Core Data 프레임워크를 활용하여 데이터를 저장하고 관리하는 방법에 대해 알아보겠습니다.

목차

  1. Core Data 설정
  2. 모델 생성
  3. 데이터 저장
  4. 데이터 조회
  5. 데이터 업데이트
  6. 데이터 삭제

Core Data 설정

Core Data를 사용하려면 먼저 프로젝트에 Core Data 스택을 설정해야 합니다. Xcode에서 “Use Core Data” 옵션을 활성화하여 Core Data 스택을 프로젝트에 추가할 수 있습니다. 이렇게 하면 데이터 모델 파일과 관련된 코드 파일이 자동으로 생성됩니다.

모델 생성

데이터 모델은 Core Data에서 사용할 데이터 구조를 정의하는 역할을 합니다. Xcode의 Data Model Editor를 사용하여 엔터티(Entity), 속성(Attribute), 관계(Relationship) 등을 표현하는 모델 파일을 생성합니다.

import CoreData

// 데이터 모델을 사용하기 위한 선언
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "EntityName", in: managedContext)!

let dataObject = NSManagedObject(entity: entity, insertInto: managedContext)
dataObject.setValue("Value1", forKey: "attribute1")
dataObject.setValue("Value2", forKey: "attribute2")

do {
  try managedContext.save()
} catch let error as NSError {
  print("Could not save. \(error), \(error.userInfo)")
}

데이터 저장

Core Data를 사용하여 데이터를 저장하려면 NSManagedObject 클래스를 사용하여 새로운 데이터 객체를 생성하고, 해당 객체의 속성에 값을 설정한 후에 save() 메서드를 호출하여 변경사항을 저장합니다.

데이터 조회

저장된 데이터를 가져오기 위해서는 NSFetchRequest를 사용하여 데이터를 요청하고, NSManagedObject의 속성을 통해 데이터에 접근할 수 있습니다.

let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "EntityName")

do {
  let result = try managedContext.fetch(fetchRequest)
  for data in result as! [NSManagedObject] {
    print(data.value(forKey: "attribute1") as! String)
    print(data.value(forKey: "attribute2") as! String)
  }
} catch {
  print("Failed")
}

데이터 업데이트

Core Data를 사용하여 데이터를 업데이트할 때는 NSFetchRequest를 사용하여 업데이트할 데이터를 가져온 후, 값을 변경하고 다시 save() 메서드를 호출하여 변경사항을 저장합니다.

데이터 삭제

NSManagedObject의 delete() 메서드를 사용하여 데이터를 삭제할 수 있습니다. 데이터를 삭제한 후에는 save() 메서드를 호출하여 변경사항을 저장해야 합니다.

이렇게 Core Data 프레임워크를 사용하여 데이터를 저장하고 관리할 수 있습니다. Core Data를 사용하면 데이터베이스를 직접 다루지 않아도 되므로 개발자가 데이터 관리에 더 많은 시간을 할애할 수 있습니다.

필요한 경우 Core Data 프레임워크의 다양한 기능을 더 자세히 알아보시기 바랍니다.

참고 자료