Skip to content

Instantly share code, notes, and snippets.

@mhomol
Created September 17, 2015 13:30
Show Gist options
  • Select an option

  • Save mhomol/580706419c48e4bcc48d to your computer and use it in GitHub Desktop.

Select an option

Save mhomol/580706419c48e4bcc48d to your computer and use it in GitHub Desktop.
Bag Labs Post - CloudKit and Swift - Code
import CloudKit
class CloudKitManager : NSObject
{
var container : CKContainer?
let privateDB : CKDatabase?
override init() {
container = CKContainer.defaultContainer()
privateDB = container!.privateCloudDatabase
}
//Save your object
func saveObject(name:String, gender:String, id:String)
{
//Record type must match the name of the table you created in CloudKit dashboard
let pet = CKRecord(recordType: "Pet")
pet.setValue(name, forKey: "name")
pet.setValue(gender, forKey: "gender")
pet.setValue(id, forKey: "id")
//Save to CloudKit
privateDB?.saveRecord(pet, completionHandler: {
(record:CKRecord!, error:NSError!) in
println("Saved to Cloud")
})
}
//Update a record
func updateObject(name:String, gender:String, id:String, record:CKRecord)
{
record.setValue(name, forKey: "name")
record.setValue(gender, forKey: "gender")
record.setValue(id, forKey: "id")
//Save to CloudKit
privateDB?.saveRecord(record, completionHandler: {
(record:CKRecord!, error:NSError!) in
println("Saved to Cloud")
})
}
//Get record
func getObject(completion:(record:CKRecord?) -> Void)
{
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Pet", predicate: predicate)
//Query CloudKit db for the item we want
privateDB!.performQuery(query, inZoneWithID: nil)
{
results, error in
if error != nil
{
completion(record: nil)
}
else
{
if results.count > 0
{
if let record = results[0] as? CKRecord
{
completion(record: record)
}
}
else
{
completion(record: nil)
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment