iOS Enregistrement de données dans CloudKit


Exemple

Pour enregistrer la date dans CloudKit, nous devons faire:

  • Un CKRecordID (la clé de votre enregistrement unique)
  • Un CKRecord (qui inclut des données)

Faire une clé d'enregistrement

Pour garantir que chaque nouvel identifiant d'enregistrement est unique, nous utilisons l' horodatage actuel, qui est unique. Nous obtenons l'horodatage en utilisant NSDate méthode de timeIntervalSinceReferenceDate() . Il est sous la forme de ###. ### (# sont des nombres), nous utiliserons la partie entière. Pour ce faire, nous divisons la chaîne:

Rapide

let timestamp = String(format: "%f", NSDate.timeIntervalSinceReferenceDate())
let timestampParts = timestamp.componentsSeparatedByString(".")
let recordID = CKRecordID(recordName: timestampParts[0])

Faire le record

Pour faire l'enregistrement, nous devrions spécifier le type d'enregistrement (expliqué dans Utilisation de CloudKit Dashboard) en tant qu'Utilisateurs, l'ID que nous avons créé tout à l'heure et les données. Ici, nous allons ajouter un exemple de texte, une image et la date du jour à l'enregistrement:

Rapide

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")

Objectif 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"];

Remarque

Ici, nous n'avons pas ajouté l' UIImage directement à l'enregistrement, car comme mentionné dans Remarques, le format d'image n'est pas directement pris en charge dans CloudKit, nous avons donc converti UIImage en CKAsset .

Accéder au conteneur

Rapide

let container = CKContainer.defaultContainer()
let database = container.privateCloudDatabase // or container.publicCloudDatabase

Enregistrement des enregistrements dans la base de données CloudKit

Rapide

database.saveRecord(record, completionHandler: { (_, error) -> Void in
    print(error ?? "")
})