Upgrade to Pro — share decks privately, control downloads, hide ads and more …

up to the cloud - CloudKit and what we can lear...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

up to the cloud - CloudKit and what we can learn from it

Up to the cloud - CloudKit and what we can learn from it will give you you a quickstart into Apple's CloudKit service and what how your networking code can improve with swift's closure syntax.

Avatar for Jens Ravens

Jens Ravens

July 28, 2014

Other Decks in Programming

Transcript

  1. ! • Apple’s Backend as a Service • Foundation for

    iCloud • Private and public data • Realtime + Push • Contact Discovery • Free (with limits)
  2. ! • NSString • NSNumber • NSData • NSDate CKRecord

    let record = CKRecord(recordType: CrumbRecordType) record.setObject(text, forKey: CrumbKeyText) record.setObject(location, forKey: CrumbKeyLocation) cloudDatabase.saveRecord(record){ record, error in } • CLLocation • CKReference • CKAsset • Arrays
  3. ! CKQuery let query = CKQuery(recordType: "Record", predicate: 
 NSPredicate(value:

    true)) cloudDatabase.performQuery(query, inZoneWithID: nil, completionHandler: {records, error in //FIXME: your code here })
  4. ! Trailing Closure Syntax let query = CKQuery(recordType: "Record", predicate:

    
 NSPredicate(value: true)) cloudDatabase.performQuery(query, inZoneWithID: nil, completionHandler: {records, error in //FIXME: your code here }) cloudDatabase.performQuery(query, inZoneWithID: nil) {records, error in //FIXME: your code here }
  5. !

  6. !

  7. ! CKSubscription self.crumbSubscription = 
 CKSubscription(recordType: "Record", predicate: NSPredicate(value: true),

    subscriptionID:"crumb-subscription", options:.FiresOnRecordCreation) self.cloudDatabase.saveSubscription(self.crumbSubscription) {subscription, error in if error { NSLog("error creating subscription: %@", [error!]) } }
  8. ! Discover all contacts CKContainer.defaultContainer() .discoverAllContactUserInfosWithCompletionHandler { users, error in

    //TODO: awesome error handling } Each user as a firstname, a lastname and a unique id.
  9. ! free with limits • private database records count against

    user’s iCloud storage • public database: Start with: Storage 5GB for assets
 50MB for database Data Transfer 25MB/day for assets
 250KB/day for database Grow with every user: Storage 100MB for assets
 1MB for database Data Transfer 0.5MB/user for assets
 5KB/user for database Free up to: Storage 1PB for assets
 10TB for database Data Transfer 5TB/day for assets
 50GB/day for database
  10. ! class NSOperation : NSObject { func start() func cancel()

    var executing: Bool { get } var finished: Bool { get } ! var dependencies: [AnyObject]! { get } var completionBlock: (() -> Void)! var name: String! } NSOperation everywhere
  11. ! NSOperation everywhere • dependencies • callback blocks • priority

    within queues • state (not started, running, canceled, failed, succeeded)
  12. ALL RIGHTS RESERVED. ! Die Inhalte dieses Konzeptes sowie die

    verwendeten Modelle sind vertraulich und urheberrechtlich geschützt. Eine Weitergabe an Dritte so wie Vervielfältigungen, die über einen persönlichen und internen Gebrauch hinausgehen, bedürfen – auch in Auszügen – einer vorherigen schriftlichen Zustimmung des Urhebers, ebenso jegliche Nutzung der Konzepte und Modelle im Zusammenhang einer Zusammenhangenarbeit mit Dritten. Die Bildrechte der verwendeten Motive liegen beim jeweiligen Inhaber. Nur zum internen Gebrauch. Wilhelmstr. 41 D-10963 Berlin ! [email protected] nerdgeschossberlin.de THANK YOU.