CloudKit
02 / 02

CloudKit Fundamentals: Containers, Databases & Records

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 apps

Records

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 works

Keep your own version of these notes — editable, searchable, and organised by your stack.

Start free