CloudKit est un framework Apple introduit avec iOS 8 en 2014. Son objectif est de fournir une solution simple permettant de stocker les données de vos applications dans le nuage à l'aide d'iCloud, en les rendant disponibles sur plusieurs appareils. Certaines des fonctionnalités clés de CloudKit incluent:
Dans ce tutoriel, je vais vous apprendre à configurer et interagir avec CloudKit dans une application iOS en créant un exemple d'application appelé CloudBug. CloudBug affiche une liste de bogues avec un titre et une description, qui sont stockés dans iCloud à l'aide de CloudKit..
Ce tutoriel nécessite que vous exécutiez Xcode 6+ et que vous disposiez d'un compte développeur iOS. Vous devrez également télécharger le projet de démarrage depuis GitHub..
La première chose que vous devez faire après l’ouverture du projet de démarrage est de changer la identifiant de paquet et équipe. Sélectionnez le CloudBug projet dans le Navigateur de projet et choisissez le CloudBug cible de la liste des cibles.
Changer la identifiant de paquet en une chaîne unique en utilisant la notation de service de nom de domaine inverse. Ensuite, sélectionnez l'équipe appropriée pour votre compte développeur.
Ouvrez le Les capacités onglet en haut et activer iCloud en basculant l'interrupteur à droite. Cela révélera les paramètres iCloud pour le CloudBug cible.
Dans les paramètres iCloud, cochez la case intitulée CloudKit activer CloudKit pour la cible CloudBug.
Générez et exécutez l'application sur un périphérique physique dans le simulateur iOS pour voir si tout fonctionne sans erreurs..
Clique le Tableau de bord CloudKit bouton en bas des paramètres iCloud. Cela ouvrira le tableau de bord CloudKit dans votre navigateur. Une fois connecté à votre compte de développeur, le tableau de bord CloudKit devrait apparaître. Avant de continuer, laissez-moi vous guider dans les éléments de la barre latérale gauche.
Dans ce tutoriel, vous ne vous focaliserez que sur les types d'enregistrement et la zone par défaut publique. L'étape suivante consiste à créer votre premier type d'enregistrement.
Si vous sélectionnez Types d'enregistrement dans la barre latérale à gauche, vous remarquerez qu’un type nommé Utilisateurs existe déjà.
Créons un nouveau type d'enregistrement nommé Punaise qui contiendra un titre et une description. Cliquez sur le bouton plus en haut pour créer un nouveau type d'enregistrement..
Remplacez le nom du nouveau type d'enregistrement par Punaise et ajouter deux attributs, Titre et La description. Faire les deux attributs de type Chaîne avec seulement le Question option d'index cochée. Voici à quoi devrait ressembler le nouveau type d'enregistrement.
Cliquez sur sauvegarder en bas à droite pour créer le Punaise type d'enregistrement.
Quand vous sélectionnez Zone par défaut sous Données publiques, la Punaise le type d'enregistrement devrait déjà être sélectionné. Créez un nouvel enregistrement en cliquant sur Nouvel enregistrement ou en cliquant sur le bouton plus en haut.
Entrez ce que vous voulez pour l'enregistrement La description et Titre des champs.
Cliquez sur sauvegarder en bas à droite pour créer l'enregistrement. Vous verrez que votre enregistrement a été attribué un enregistrement unique ID, Créé rendez-vous amoureux, Modifié rendez-vous amoureux, Créé par identifiant, et Modifié par identifiant. Peu importe le type d'enregistrement sur lequel un enregistrement est basé, il aura toujours ces cinq attributs..
Revenez à Xcode et ouvrez MasterViewController.swift. En haut, ajoutez une instruction d'importation pour importer la structure CloudKit..
importer CloudKit
Mettre à jour le viewDidLoad
méthode en ajoutant l'extrait de code suivant.
let conteneur = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase let requête = CKQuery (recordType: "Bug", prédicat: NSPredicate (format: "TRUEPREDICATE", argumentArray: nil)) publicData.performQuery (query, inZoneWithID: nil) résultats, erreur dans si erreur == nil // Il n'y a pas d'erreur de bogue dans les résultats let newBug = Bug () newBug.title = bogue ["Titre"] comme! String newBug.description = bug ["Description"] comme! String self.objects.append (newBug) dispatch_async (dispatch_get_main_queue (), () -> Annuler dans self.tableView.reloadData ()) autre println (error)
Voyons ce qui se passe dans cet extrait de code.
NSPredicate
exemple. Ce prédicat peut être utilisé pour filtrer les résultats de la requête, par exemple, récupérer uniquement les enregistrements créés ou modifiés après une certaine date. Pour cet exemple, nous récupérons tous les enregistrements de type Punaise.résultats
tableau et un Erreur
objet.Erreur
objet est néant
, nous parcourons les éléments du résultats
tableau et créer un local Punaise
exemple pour chaque enregistrement. Chaque Punaise
l'instance est ajoutée à la source de données de la vue table et la vue table est rechargée sur le thread principal.Générez et exécutez votre application pour voir si l'enregistrement créé dans le tableau de bord CloudKit est chargé dans CloudBug..
Si vous voyez une erreur dans la console Xcode similaire à celle ci-dessous, assurez-vous que vous êtes connecté au compte iCloud approprié sur votre appareil de test. Ceci est également vrai si vous utilisez CloudBug dans le simulateur iOS..
Taper sur le bogue dans la vue tableau devrait présenter le contrôleur de vue de détail avec la description du bogue.
Bien que charger des données depuis iCloud via CloudKit puisse être très utile, CloudBug doit également permettre aux utilisateurs de créer de nouveaux enregistrements. Dans MasterViewController.swift, ajoutez l'extrait de code suivant au receiveBug (_ :)
méthode.
let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase let record = CKRecord (recordType: "Bug") record.setValue (bug.title, pourKey: "Titre") record.setValue (bug.description, pourKey: " Description ") publicData.saveRecord (record, completionHandler: record, erreur dans si erreur! = Nil println (error))
Les deux premières lignes doivent être familières. Nous obtenons une référence au conteneur par défaut et à la base de données publique. Nous créons un CKRecord
par exemple, définir des valeurs pour le Titre et La description clés, et enregistrer l'enregistrement sur iCloud.
Notez que le record
objet renvoyé d'iCloud dans le saveRecord (_: completionHandler :)
le gestionnaire d'achèvement inclut les valeurs que vous avez définies manuellement ainsi que les cinq attributs par défaut que nous avons vus précédemment dans le tableau de bord CloudKit.
Générez et exécutez votre application, puis publiez un nouveau bogue en appuyant sur le bouton plus en haut à droite, en remplissant les champs de titre et de description. Robinet Poster et enregistrer le nouvel enregistrement dans iCloud dans la base de données CloudKit.
Revisitez le tableau de bord CloudKit et accédez au Zone par défaut sous Données publiques. Si tout s'est bien passé,vous devriez voir deux Punaise enregistrements dans la base de données.
Terminons ce tutoriel en permettant aux utilisateurs de supprimer un bogue. Ajoutez l'extrait de code suivant au tableView (_: commitEditingStyle: forRowAtIndexPath :)
méthode juste au-dessus objects.removeAtIndex (indexPath.row)
.
let conteneur = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase let bug = self.objects [indexPath.row] let requête = CKQuery (recordType: "Bug", prédicat: NSPredicate (format: "(Title ==% @) AND (Description ==% @) ", argumentArray: [bug.title, bug.description])) publicData.performQuery (requête, inZoneWithID: nil, completionHandler: résultats, erreur dans si erreur == nil si results.count > 0 let record: CKRecord! = Résultats [0] en tant que! CKRecord println (record) publicData.deleteRecordWithID (record.recordID, completionHandler: recordID, erreur dans if error! = Nil println (error)) else println (error))
Pour supprimer un enregistrement, nous créons une requête comme précédemment. Pour supprimer un enregistrement, cependant, nous créons un prédicat correspondant au titre et à la description du bogue. Le gestionnaire d'achèvement renvoie les résultats de la requête que nous utilisons pour supprimer l'enregistrement correspondant de la base de données publique..
Générez et exécutez l’application, puis supprimez l’un des bogues, soit en glissant vers la droite, soit en appuyant sur modifier bouton.
Revisitez le tableau de bord CloudKit pour voir si le bogue que vous avez sélectionné a bien été supprimé..
Dans ce tutoriel, vous avez créé votre première application CloudKit en liant votre application à iCloud. Vous avez appris à créer des types et des enregistrements dans le tableau de bord CloudKit et à les charger dans votre application. Outre l'ajout et la suppression d'enregistrements dans le tableau de bord CloudKit, nous avons également décrit l'ajout et la suppression d'enregistrements à l'aide de la structure CloudKit. Si vous avez des commentaires ou des questions, laissez-les dans les commentaires ci-dessous.