Skip to content

insidegui/CloudKitCodable

Repository files navigation

CloudKit + Codable = ❤️

Badge showing the current build status

This project implements CloudKitRecordEncoder and CloudKitRecordDecoder, allowing for custom data types to be converted to/from CKRecord automatically.

Usage

For details on how to use CloudKitCodable, please check the included documentation.

Example

Declaring a model that can be encoded as a CKRecord:

struct Person: CustomCloudKitCodable {
    var cloudKitSystemFields: Data?
    let name: String
    let age: Int
    let website: URL
    let avatar: URL
    let isDeveloper: Bool
}

Creating a CKRecord from a CustomCloudKitCodable type:

let rambo = Person(...)

do {
   let record = try CloudKitRecordEncoder().encode(rambo)
   // record is now a CKRecord you can upload to CloudKit
} catch {
   // something went wrong
}

Decoding a CustomCloudKitCodable type from a CKRecord:

let record = // record obtained from CloudKit
do {
   let person = try CloudKitRecordDecoder().decode(Person.self, from: record)
} catch {
   // something went wrong
}

Minimum Deployment Targets

  • iOS 14
  • tvOS 14
  • watchOS 5
  • macOS 11
  • Xcode 15 (recommended)

Installation

Swift Package Manager

Add CloudKitCodable to your Package.swift:

dependencies: [
    .package(url: "https://github.com/insidegui/CloudKitCodable.git", from: "0.3.0")
]

Manually

If you prefer not to use Swift Package Manager, you can integrate CloudKitCodable into your project manually by copying the files in.

About

An encoder and decoder for CKRecord

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages