IOS개발: SWIFT/7. 실전 프로젝트 제작

Swift 데이터 저장: UserDefaults와 CoreData

_Blue_Sky_ 2024. 9. 19. 14:28
728x90
728x90

Swift 앱에서 데이터를 저장하는 방법은 다양하지만, 가장 많이 사용되는 방법은 UserDefaultsCoreData입니다. 각 방법마다 장단점이 있으므로, 어떤 데이터를 어떻게 저장해야 할지에 따라 적절한 방법을 선택해야 합니다.

1. UserDefaults

  • 간단한 키-값 저장: 앱 설정, 사용자 기본 설정 등 간단한 데이터를 저장하는 데 적합합니다.
  • 사용법:
    • UserDefaults.standard를 통해 기본 UserDefaults 객체에 접근합니다.
    • set(_:forKey:) 메서드를 사용하여 데이터를 저장합니다.
    • object(forKey:) 메서드를 사용하여 데이터를 가져옵니다.
  • 저장 가능한 데이터 타입: String, Number, Data, Date, Array, Dictionary 등
  • 장점:
    • 사용하기 간편하고 직관적입니다.
    • 앱이 실행될 때마다 자동으로 로드됩니다.
  • 단점:
    • 저장할 수 있는 데이터의 양과 복잡도에 제한이 있습니다.
    • 민감한 정보를 저장하기에는 적합하지 않습니다.
    • 관계형 데이터를 저장하기 어렵습니다.

예시:

// 사용자 이름 저장
UserDefaults.standard.set("홍길동", forKey: "username")

// 사용자 이름 가져오기
if let username = UserDefaults.standard.string(forKey: "username") {
    print("사용자 이름: \(username)")
}
 

2. CoreData

  • 복잡한 데이터 모델 저장: 많은 양의 데이터를 저장하고, 복잡한 관계를 가진 데이터를 관리해야 할 때 사용합니다.
  • 객체-관계형 매핑: 데이터를 객체로 모델링하여 개발 생산성을 높입니다.
  • 장점:
    • 강력한 데이터 모델링 기능을 제공합니다.
    • 많은 양의 데이터를 효율적으로 관리할 수 있습니다.
    • 복잡한 쿼리를 지원합니다.
  • 단점:
    • 설정이 복잡하고, 학습 곡선이 가파릅니다.
    • 성능 최적화가 필요할 수 있습니다.

CoreData를 사용하기 위한 단계:

  1. Data Model 생성: Xcode에서 Data Model을 생성하고 Entity, Attribute, Relationship을 정의합니다.
  2. NSManagedObject 서브클래스 생성: Data Model에 정의된 Entity에 해당하는 NSManagedObject 서브클래스를 생성합니다.
  3. NSManagedObjectContext 생성: NSManagedObjectContext를 생성하여 데이터베이스와 상호 작용합니다.
  4. 데이터 저장 및 조회: NSManagedObjectContext의 save(), fetch() 메서드를 사용하여 데이터를 저장하고 조회합니다.

예시:

// NSManagedObject 서브클래스 생성
class Person: NSManagedObject {
    @NSManaged var name: String
    @NSManaged var age: Int
}

// 데이터 저장
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let person = Person(context: context)
person.name = "홍길동"
person.age = 30

do {
    try context.save()
} catch {
    print("데이터 저장 실패: \(error)")
}

어떤 방법을 선택해야 할까?

  • 간단한 데이터 저장: UserDefaults
  • 복잡한 데이터 모델, 많은 양의 데이터: CoreData
  • 보안이 중요한 데이터: Keychain (보안 토큰 저장 전용)
  • 파일 형식의 데이터: FileManager (이미지, 문서 등)

요약

기능UserDefaultsCoreData
저장 데이터 간단한 키-값 복잡한 객체, 관계형 데이터
사용 용이성 쉽고 간편 복잡하고 학습 곡선이 가파름
성능 빠름 데이터 양에 따라 성능이 달라질 수 있음
용도 앱 설정, 사용자 기본 설정 대규모 데이터베이스, 복잡한 데이터 모델
Sheets로 내보내기

결론

Swift에서 데이터를 저장하는 방법은 다양하며, 각 방법마다 장단점이 있습니다. 어떤 방법을 선택할지는 저장하려는 데이터의 특징과 앱의 요구사항에 따라 결정해야 합니다.

728x90
728x90