Skip to content

Instantly share code, notes, and snippets.

@sundeepgupta
Last active April 11, 2016 16:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sundeepgupta/3532cd54aeeb39611f3701d61816c3b9 to your computer and use it in GitHub Desktop.
Save sundeepgupta/3532cd54aeeb39611f3701d61816c3b9 to your computer and use it in GitHub Desktop.
CloudKit Snippets
// Create Record
let record = CKRecord(recordType: "Posting")
record["url"] = self.urlField.text!
record["name"] = self.nameField.text!
// Get Database
let container = CKContainer.defaultContainer()
let database = container.publicCloudDatabase
// Save Record
database.saveRecord(record) { record, error in
if let error = error {
// for now log it and bail
print(error.localizedDescription)
return
}
dispatch_async(dispatch_get_main_queue(), {
self.dismissViewControllerAnimated(true, completion: nil)
})
}
// Fetch Records
let predicate = NSPredicate(value: true) // this means just evaluate to true, so fetch everything
// let predicate = NSPredicate(format: "owner == %@", self.userID!) // get only shoes I posted
let query = CKQuery(recordType: "Posting", predicate: predicate)
let container = CKContainer.defaultContainer()
let database = container.publicCloudDatabase
database.performQuery(query, inZoneWithID: nil) { records, error in
if let error = error {
print("error fething shoes: \(error.localizedDescription)")
return
}
self.postings = records!
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
// Fetch User
let container = CKContainer.defaultContainer()
container.fetchUserRecordIDWithCompletionHandler { recordID, error in
if let error = error {
print("error getting user record id: \(error.localizedDescription)")
return
}
let database = container.publicCloudDatabase
database.fetchRecordWithID(recordID!, completionHandler: { record, error in
if let error = error {
print("error getting user record: \(error.localizedDescription)")
return
}
self.user = record!
dispatch_async(dispatch_get_main_queue(), {
self.updateView()
})
})
}
// Reference (to parent)
container.fetchUserRecordIDWithCompletionHandler { (recordID, error) in
let owner = CKReference(recordID: recordID!, action: .DeleteSelf)
record["owner"] = owner
database.saveRecord(record) { record, error in
if let error = error {
print(error.localizedDescription)
return
}
dispatch_async(dispatch_get_main_queue(), {
self.dismissViewControllerAnimated(true, completion: nil)
})
}
}
// Uploading files (images in this case)
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
let data = UIImagePNGRepresentation(image)
let directory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first!
let path = directory.path! + "/shoe.png"
data!.writeToFile(path, atomically: true)
let shoe = CKRecord(recordType: "Shoe")
let imageAsset = CKAsset(fileURL: self.imageURL)
shoe["image"] = imageAsset
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment