Last active
April 11, 2016 16:20
-
-
Save sundeepgupta/3532cd54aeeb39611f3701d61816c3b9 to your computer and use it in GitHub Desktop.
CloudKit Snippets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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