CloudKit: Containers, Databases & Records
CloudKit is Apple's framework for storing and syncing app data in iCloud -- offloading server infrastructure, Apple ID authentication, and cross-device sync logic to Apple's platform instead of a custom backend.
Containers & Databases
let container = CKContainer.default()
let privateDB = container.privateCloudDatabase // scoped to the signed-in user
let publicDB = container.publicCloudDatabase // shared across all app users
// Each app gets its own container, isolating its data from other appsRecords
let record = CKRecord(recordType: "Note")
record["title"] = "Groceries"
record["body"] = "Milk, eggs, bread"
privateDB.save(record) { savedRecord, error in
// handle result
}CKAsset for Larger Binary Data
A CKAsset references a file (like a photo) stored separately from the record's other fields -- appropriate for larger binary content, avoiding bloating the record itself with embedded data.
Checking Account Availability
container.accountStatus { status, error in
switch status {
case .available: break // proceed with CloudKit operations
case .noAccount, .restricted: // show a fallback / message
default: break
}
}
// A user not signed into iCloud can't use CloudKit-backed
// features -- always check rather than assuming it worksKeep your own version of these notes — editable, searchable, and organised by your stack.
Start free