반응형
CloudKit
- 앱의 데이터를 iCloud에 저장하고, 모든 기기와 웹에서 데이터를 최신 상태로 유지할 수 있도록 도와주는 도구
- 비공개 데이터는 사용자의 iCloud 계정에 저장되기 때문에 사용자층이 늘어나도 무제한으로 확장이 가능하다.
- 공개 데이터를 저장할 수 있는 공간을 최대 1PB까지 사용할 수 있다.
- 웹 기반 제어 패널인 CloudKit Console를 제공하기 때문에 편리한 데이터 관리가 가능하다.
Container
- 데이터를 정리하는 논리적 공간. 앱의 저장공간이라고 생각하면 된다.
- 일반적으로 하나의 앱에서 하나의 컨테이너를 사용한다.
- 하나의 앱에서 여러 Container를 사용할 수도 있고, 여러 앱에서 하나의 Container를 사용할 수도 있다.
- 사용자는 Container 내에서 앱의 스키마를 관리한다.
Database
- Container 안에는 다양한 유형의 Database가 존재한다.
- Public Database : 여러 앱 사용자에게 데이터를 노출하려는 경우 사용하는 데이터베이스
- Private Database : 자신만 데이터를 사용하려고 하는 경우 사용하는 데이터베이스
- Shared Database : 일부 데이터를 다른 사용자와 공유하려고 하는 경우 사용하는 데이터베이스
Zone
- 데이터 기록의 논리적 구획
- Public Database는 Dafault Zone 하나만을 가진다.
- Private Database도 Dafault Zone이 있지만 여러개로 분리가 가능하다.
- Zone마다 업데이트 시점을 달리하여 불필요한 데이터 전송을 방지할 수 있고, 특정 Zone만 Shared Database에 기록되도록 처리해놓는 것도 가능하다.
주요 클래스
- CKContainer: iCloud 컨테이너를 나타내며, 데이터베이스에 접근할 수 있다.
- CKDatabase: 데이터베이스 객체로, 레코드의 저장, 검색, 업데이트, 삭제를 관리한다.
- CKRecord: 레코드를 나타내는 객체로, 데이터를 저장하는 단위이다.
- CKRecordZone: 레코드의 논리적 구역을 나타내며, 구역별로 데이터를 관리할 수 있다.
- CKQuery: 특정 조건에 맞는 레코드를 검색할 때 사용한다.
예제
import CloudKit
// 기본 컨테이너 가져오기
let container = CKContainer.default()
// 프라이빗 데이터베이스 가져오기
let privateDatabase = container.privateCloudDatabase
// 새로운 레코드 생성
let record = CKRecord(recordType: "MyRecordType")
record["name"] = "John Doe" as CKRecordValue
// 레코드 저장
privateDatabase.save(record) { savedRecord, error in
if let error = error {
print("Error saving record: \(error)")
} else {
print("Record saved successfully: \(String(describing: savedRecord))")
}
}
반응형
'🍎 Apple > Swift' 카테고리의 다른 글
[WWDC24] Swift 6로 앱을 마이그레이션하기 (0) | 2024.07.04 |
---|---|
[WWDC22] Link fast: Improve build and launch times (0) | 2024.04.08 |
[Swfit] resolvedColor(with:) / UITraitCollection.current (0) | 2023.10.27 |
[Swift] Attributes (2) | 2023.07.29 |
[Swift] AVFoundation 기초 (0) | 2023.07.15 |