Suche…
Bemerkungen
Unterstützte Typen
- NSData
- NSDate (Datum)
- NSNumber (Int / Double)
- NSString (String)
- NSArray (Array)
- CLLocation
- CKReferenz
- CKAsset
App zur Verwendung mit CloudKit registrieren
Sie benötigen eine Berechtigungsdatei, damit die App mithilfe von CloudKit auf Ihre iCloud zugreifen und Datensätze schreiben kann.
Befolgen Sie die Schritte, um von Ihrer App aus Zugriff auf iCloud zu gewähren:
1- Wählen Sie das Projekt im Projektnavigator aus und öffnen Sie die Registerkarte Allgemein.
2- Setzen Sie im Abschnitt Identität Ihre Entwickler-Apple-ID auf das Team-Dropdown-Menü. (Wenn es nicht verfügbar ist, fügen Sie es im Xcode-Menü hinzu -> Voreinstellungen -> Konten.
3- Wechseln Sie in den Projekteigenschaften zur Registerkarte Funktionen und aktivieren Sie iCloud. Wählen Sie dann "Schlüsselwertspeicher" und "CloudKit" aus.
4- Stellen Sie sicher, dass diese Punkte markiert sind:
Wenn alle Elemente markiert sind, kann Ihre App CloudKit verwenden.
CloudKit Dashboard verwenden
Alle mit CloudKit-Code erstellten Datensätze können in CloudKit Dashboard in der Vorschau angezeigt, bearbeitet und sogar entfernt werden. Um auf das CloudKit Dashboard zuzugreifen, klicken Sie hier .
Das Dashboard enthält mehrere Teile:
- Datensatztypen (auf die später noch eingegangen wird)
- Sicherheitsrollen (Hier können Sie Datenbanken als öffentlich oder privat festlegen)
- Abonnementtypen (die Ihre App für Apple Push Notifications (APNs) registrieren könnte, um Sie zu benachrichtigen, wenn ein Datensatz geändert wird)
Datensatztypen
Hier erhalten Sie eine Liste aller in der App vorhandenen Datensatztypen. Wenn Sie das CloudKit Dashboard zum ersten Mal für eine App öffnen, gibt es dort einen Datensatztyp namens Benutzer, den Sie verwenden können oder einfach löschen und einen eigenen verwenden können.
Auf dieser Seite können Sie Ihre Daten manuell eingeben. In den meisten Fällen ist dies natürlich sinnlos, da iOS SDK damit weitaus besser umgehen kann als das Dashboard. Die Funktionalität ist jedoch auch vorhanden, wenn Sie dies vorziehen. Diese Seite wird am häufigsten für die Vorschau von Typen verwendet.
Daten in CloudKit speichern
Um ein Datum in CloudKit zu speichern, müssen wir Folgendes vornehmen:
- Eine
CKRecordID
(der Schlüssel Ihres eindeutigen Datensatzes) - Ein
CKRecord
(der Daten enthält)
Einen Aufnahmeschlüssel erstellen
Um sicherzustellen, dass jede neue Datensatzkennung eindeutig ist, verwenden wir den aktuellen Zeitstempel , der eindeutig ist. Wir erhalten den Zeitstempel mit der NSDate
-Methode timeIntervalSinceReferenceDate()
. Es ist in der Form von ###. ### (# sind Zahlen), wobei wir den ganzzahligen Teil verwenden werden. Dazu teilen wir die Zeichenfolge auf:
Schnell
let timestamp = String(format: "%f", NSDate.timeIntervalSinceReferenceDate())
let timestampParts = timestamp.componentsSeparatedByString(".")
let recordID = CKRecordID(recordName: timestampParts[0])
Aufnahme machen
Um den Datensatz zu erstellen, sollten wir den Datensatztyp (wie in Verwenden von CloudKit Dashboard erläutert) als Benutzer, die ID als das, was wir gerade gemacht haben, und die Daten angeben. Hier fügen wir dem Datensatz einen Beispieltext, ein Bild und das aktuelle Datum hinzu:
Schnell
let record = CKRecord(recordType: "Users", recordID: recordID)
record.setObject("Some Text", forKey: "text")
record.setObject(CKAsset(fileURL: someValidImageURL), forKey: "image")
record.setObject(NSDate(), forKey: "date")
Ziel c
CKRecord *record = [[CKRecord alloc] initWithRecordType: "Users" recordID: recordID];
[record setObject: "Some Text" forKey: "text"];
[record setObject: [CKAsset assetWithFileURL: someValidImageURL] forKey: "image"];
[record setObject: [[NSDate alloc] init] forKey: "date"];
Hinweis
Hier haben wir den
UIImage
direkt zum Datensatz hinzugefügt, da dasUIImage
inCKAsset
nicht direkt unterstützt wird. Daher haben wirUIImage
inCKAsset
konvertiert.
Zugriff auf den Container
Schnell
let container = CKContainer.defaultContainer()
let database = container.privateCloudDatabase // or container.publicCloudDatabase
Speichern der Datensätze in der CloudKit-Datenbank
Schnell
database.saveRecord(record, completionHandler: { (_, error) -> Void in
print(error ?? "")
})