Eine Einführung in CloudKit

Einführung

CloudKit ist ein Apple-Framework, das 2014 neben iOS 8 eingeführt wurde. Es dient dazu, eine einfache Lösung zum Speichern von Anwendungsdaten in der Cloud mithilfe von iCloud bereitzustellen, sodass diese geräteübergreifend verfügbar sind. Zu den wichtigsten Funktionen von CloudKit gehören:

  • bis zu 1 PB Asset-Speicher (Bilder, Audiodateien usw.)
  • bis zu 10 TB Datenbankspeicher (Strings, Zahlen, Arrays usw.)
  • iCloud-Benutzerauthentifizierung
  • Benachrichtigungen

In diesem Lernprogramm werde ich Ihnen zeigen, wie Sie CloudKit in einer iOS-Anwendung einrichten und damit interagieren, indem Sie eine Beispielanwendung erstellen CloudBug. CloudBug zeigt eine Liste von Fehlern mit einem Titel und einer Beschreibung an, die mit CloudKit in iCloud gespeichert werden.

Bedarf

Für dieses Lernprogramm müssen Sie Xcode 6+ ausführen und über ein iOS-Entwicklerkonto verfügen. Sie müssen auch das Starterprojekt von GitHub herunterladen.

1. Projektkonfiguration

Nach dem Öffnen des Starterprojekts müssen Sie zunächst das Ziel ändern Bündelkennung und Mannschaft. Wähle aus CloudBug Projekt in der Projektnavigator und wähle das CloudBug Ziel aus der Liste der Ziele.

Ändere das Bündelkennung zu einer eindeutigen Zeichenfolge mithilfe der umgekehrten Domain Name Service-Notation. Wählen Sie anschließend das für Ihr Entwicklerkonto geeignete Team aus.

Öffne das Fähigkeiten Tab oben und aktivieren iCloud indem Sie den Schalter auf der rechten Seite umschalten. Dadurch werden die iCloud-Einstellungen für die angezeigt CloudBug Ziel.

Aktivieren Sie in den iCloud-Einstellungen das Kontrollkästchen CloudKit um CloudKit für das CloudBug-Ziel zu aktivieren.

Erstellen Sie die Anwendung auf einem physischen Gerät und führen Sie sie im iOS-Simulator aus, um festzustellen, ob alles fehlerfrei funktioniert.

2. Erstellen des Fehlersatztyps

Drücke den CloudKit-Dashboard Schaltfläche am unteren Rand der iCloud-Einstellungen. Dadurch wird das CloudKit-Dashboard in Ihrem Browser geöffnet. Nachdem Sie sich mit Ihrem Entwicklerkonto angemeldet haben, sollte das CloudKit-Dashboard angezeigt werden. Bevor Sie fortfahren, lassen Sie mich durch die Elemente in der linken Seitenleiste gehen.

Schema

  • Datensatztypen Funktion ähnlich einer regulären Klassendefinition. Datensätze werden wie Klasseninstanzen aus diesen Typen erstellt.
  • Sicherheitsrollen bieten eine Möglichkeit, verschiedenen Benutzern auf unterschiedliche Weise auf Daten zuzugreifen. Beispielsweise kann eine Sicherheitsrolle verwendet werden, um nur Benutzern mit Administratorrechten Lese- und Schreibberechtigungen für Daten zu gewähren.
  • Abonnementtypen werden verwendet, um die verschiedenen Abonnements Ihrer App zu verwalten, sofern diese implementiert wurden.

Öffentliche Daten

  • Benutzerdatensätze funktionieren genauso wie reguläre Datensätze, außer dass sie speziell mit der Benutzer Datensatztyp, der nicht gelöscht werden kann.
  • Standardzone Hier werden alle Ihre öffentlichen Aufzeichnungen und sonstigen Daten gespeichert.

Private Daten

  • Standardzone funktioniert genauso wie die öffentliche Standardzone, außer dass nur der aktuell angemeldete Benutzer darauf zugreifen kann.

Administrator

  • Mannschaft Hier können Sie andere Entwickler anzeigen, die an dem Projekt zusammenarbeiten, und deren Berechtigungen bearbeiten.
  • Einsatz Hier können Sie sehen, welche Änderungen am Schema vorgenommen werdenArtikel, wenn Ihr Projekt eine Produktionsumgebung betritt.

In diesem Lernprogramm werden Sie sich nur auf Datensatztypen und die öffentliche Standardzone konzentrieren. Im nächsten Schritt erstellen Sie Ihren ersten Datensatztyp.

Wenn Sie auswählen Datensatztypen In der linken Seitenleiste werden Sie feststellen, dass ein Typ benannt wurde Benutzer ist bereits vorhanden.

Erstellen wir einen neuen Datensatztyp mit dem Namen Fehler das wird einen Titel und eine Beschreibung enthalten. Klicken Sie oben auf das Pluszeichen, um einen neuen Datensatztyp zu erstellen.

Ändern Sie den Namen des neuen Datensatztyps in Fehler und fügen Sie zwei Attribute hinzu, Titel und Beschreibung. Machen Sie beide Attribute vom Typ String nur mit dem Abfrage Indexoption aktiviert. So sollte der neue Datensatztyp aussehen.

Klicken sparen unten rechts, um das zu erstellen Fehler Aufnahmetyp.

3. Erstellen von Datensätzen im CloudKit Dashboard

Wenn Sie auswählen Standardzone unter Öffentliche Daten, das Fehler Datensatztyp sollte bereits ausgewählt sein. Erstellen Sie einen neuen Datensatz, indem Sie auf klicken Neuer Eintrag oder indem Sie auf den Plus-Button oben klicken.

Geben Sie ein, was Sie für die Aufzeichnungen wünschen Beschreibung und Titel Felder.

Klicken sparen unten rechts, um den Datensatz zu erstellen. Sie sehen, dass Ihrem Datensatz ein eindeutiger Datensatz zugewiesen wurde ICH WÜRDEErstellt Datum, Geändert Datum, Erstellt von Kennung und Verändert von Kennung. Unabhängig davon, auf welchem ​​Datensatztyp ein Datensatz basiert, hat er immer diese fünf Attribute.

4. Datensätze laden

Gehe zurück zu Xcode und öffne MasterViewController.swift. Fügen Sie oben eine Importanweisung hinzu, um das CloudKit-Framework zu importieren.

CloudKit importieren

Aktualisieren Sie die viewDidLoad Methode durch Anhängen des folgenden Codeausschnitts.

let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase let Abfrage = CKQuery (recordType: "Bug", Prädikat: NSPredicate (Format: "TRUEPREDICATE", argumentArray: nil)) publicData.performQuery (query, inZoneWithID: nil) results, error in if error == nil // Es gibt keinen Fehler für Fehler in den Ergebnissen let newBug = Bug () newBug.title = Fehler ["Titel"] als! String newBug.description = Fehler ["Beschreibung"] als! String self.objects.append (newBug) dispatch_async (dispatch_get_main_queue (), () -> Void in self.tableView.reloadData ()) else println (error)

Mal sehen, was in diesem Code-Snippet passiert.

  • Zunächst erhalten wir einen Verweis auf den Standardcontainer für Ihre Anwendung. Dieser Container enthält die Datensatztypen und Datensätze, die wir im CloudKit-Dashboard erstellt haben. Sie können weitere Container mit einem eindeutigen Bezeichner in erstellen Target Inspector> Fähigkeiten.
  • Zweitens erhalten wir einen Verweis auf die öffentliche Datenbank des Containers. Das Format ist für die private Datenbank gleich.
  • Wir erstellen dann eine Abfrage für die Fehler Datensatztyp mit einem NSPredicate Beispiel. Dieses Prädikat kann verwendet werden, um die Ergebnisse der Abfrage zu filtern. Beispielsweise werden nur Datensätze abgerufen, die nach einem bestimmten Datum erstellt oder geändert wurden. Für dieses Beispiel holen wir jeden Datensatz des Typs Fehler.
  • Als Nächstes weisen wir die Datenbank an, die Abfrage auszuführen, wodurch eine asynchrone Anforderung ausgelöst wird. Wenn die Anforderung abgeschlossen ist, wird der Beendigungsblock ausgeführt, und Sie erhalten eine a Ergebnisse Array und ein Error Objekt.
  • Wenn die Error Objekt ist Null, wir durchlaufen die elemente der Ergebnisse Array und erstellen Sie eine lokale Fehler Instanz für jeden Datensatz. Jeder Fehler Eine Instanz wird der Datenquelle der Tabellensicht hinzugefügt, und die Tabellensicht wird im Hauptthread neu geladen.

Erstellen Sie Ihre Anwendung, und führen Sie sie aus, um festzustellen, ob der im CloudKit-Dashboard erstellte Datensatz in CloudBug geladen wird.

Wenn in der Xcode-Konsole ein Fehler angezeigt wird, der dem folgenden ähnelt, vergewissern Sie sich, dass Sie beim richtigen iCloud-Konto auf Ihrem Testgerät angemeldet sind. Dies gilt auch, wenn Sie CloudBug im iOS-Simulator ausführen.

Wenn Sie den Fehler in der Tabellensicht antippen, wird der Detailansicht-Controller mit der Fehlerbeschreibung angezeigt.

5. Datensätze erstellen

Das Laden von Daten aus iCloud über CloudKit kann sehr nützlich sein. CloudBug muss jedoch auch die Möglichkeit haben, dass Benutzer neue Datensätze erstellen können. Im MasterViewController.swift, Fügen Sie das folgende Codeausschnitt hinzu receiveBug (_ :) Methode.

let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase let record = CKRecord (recordType: "Bug") record.setValue (bug.title, forKey: "title") record.setValue (bug.description, forKey: " Beschreibung ") publicData.saveRecord (record, completionHandler: record, Fehler bei if error! = Nil println (error))

Die ersten beiden Zeilen sollten bekannt sein. Wir erhalten einen Verweis auf den Standardcontainer und die öffentliche Datenbank. Wir schaffen ein CKRecord Beispiel, setzen Sie Werte für die Titel und Beschreibung Schlüssel und speichern Sie den Datensatz in iCloud.

Notiere dass der Aufzeichnung Objekt, das von iCloud im zurückgegeben wurde saveRecord (_: completionHandler :) Der Completion-Handler enthält die manuell festgelegten Werte sowie die fünf Standardattribute, die wir zuvor im CloudKit-Dashboard angezeigt haben.

Erstellen und starten Sie Ihre Anwendung, und veröffentlichen Sie einen neuen Fehler, indem Sie oben rechts auf das Pluszeichen tippen und die Titel- und Beschreibungsfelder ausfüllen. Zapfhahn Post und um den neuen Datensatz in iCloud in der CloudKit-Datenbank zu speichern.

Besuchen Sie das CloudKit-Dashboard erneut und navigieren Sie zu Standardzone unter Öffentliche Daten. Wenn alles gut ging,Sie sollten zwei sehen Fehler Datensätze in der Datenbank.

6. Datensätze löschen

Beenden Sie dieses Lernprogramm, indem Sie Benutzern das Löschen von Fehlern ermöglichen. Fügen Sie das folgende Code-Snippet hinzu tableView (_: commitEditingStyle: forRowAtIndexPath :) Methode gleich oben objects.removeAtIndex (indexPath.row).

let container = CKContainer.defaultContainer () let publicData = container.publicCloudDatabase let bug = self.objects [indexPath.row] let Abfrage = CKQuery (recordType: "Bug", Prädikat: NSPredicate (format: "(title ==% @) AND (Description ==% @) ", argumentArray: [bug.title, bug.description])) publicData.performQuery (Abfrage, inZoneWithID: nil, completionHandler: Ergebnisse, Fehler in if error == nil if results.count > 0 Datensatz aufnehmen: CKRecord! = Ergebnisse [0] als! CKRecord println (record) publicData.deleteRecordWithID (record.recordID, completionHandler: recordID, Fehler in if error! = Nil println (error)) else println (error))

Um einen Datensatz zu löschen, erstellen wir eine Abfrage wie zuvor. Um einen Datensatz zu löschen, erstellen wir jedoch ein Vergleichselement, das dem Titel und der Beschreibung des Fehlers entspricht. Der Completion-Handler gibt die Ergebnisse der Abfrage zurück, die wir zum Löschen des entsprechenden Datensatzes aus der öffentlichen Datenbank verwenden.

Erstellen und starten Sie die Anwendung, und löschen Sie einen der Fehler, indem Sie entweder nach rechts wischen oder auf das Symbol tippen Bearbeiten Taste.

Besuchen Sie das CloudKit-Dashboard erneut, um zu sehen, ob der von Ihnen ausgewählte Fehler tatsächlich gelöscht wurde.

Fazit

In diesem Lernprogramm haben Sie Ihre erste CloudKit-Anwendung erstellt, indem Sie Ihre Anwendung mit iCloud verknüpfen. Sie haben gelernt, wie Sie Datensatztypen und -datensätze im CloudKit-Dashboard erstellen und diese in Ihre Anwendung laden. Neben dem Hinzufügen und Löschen von Datensätzen im CloudKit-Dashboard befassten wir uns auch mit dem Hinzufügen und Löschen von Datensätzen mithilfe des CloudKit-Frameworks. Wenn Sie Anmerkungen oder Fragen haben, lassen Sie sie in den Kommentaren unten.