iOS swift: stocker le cache à l'aide de coredata (cloudkit)

J'apprends à utiliser cloudkit pour save et récupérer des loggings, mais je suis confus à propos de l'logging du cache dans Coredata.

Par exemple, j'ai récupéré plusieurs loggings et affiché quelques attributes de ce type d'logging (disons A, C et F) en utilisant une vue de table. Et quand je clique sur une cellule, cela affichera le détail de cet logging (tous les attributes de cet logging: ABCDEF, mais n'incluent pas l'logging des attributes de reference). Je me demandais si je devais stocker ces choses dans Coredata quand j'ai récupéré le disque pour la première fois: "ACF et recordID"? Et quand l'user clique pour voir les détails, je prends à nouveau en utilisant recordID? Et le point key est quel type d'atsortingbut dois-je utiliser pour stocker CKRecordID / CKRecord?

Je sais que je pourrais stocker des choses comme l'image dans un file de cache local (ce qui est également source de confusion), mais ce n'est pas un magasin persistant, n'est-ce pas? Et la raison pour laquelle je ne stocke pas directement tous les attributes d'logging est parce que cet logging est une "invitation", seulement si l'user choisit de l'accepter, il downloada tous les attributes comprenant quelques attributes de type de reference.

Toute aide serait utile, merci !!

Vous devez archiver uniquement les champs système lors de la caching, comme ceci:

private func dataFromRecord(record:CKRecord) -> NSData{ let archivedData = NSMutableData() let archiver = NSKeyedArchiver(forWritingWithMutableData: archivedData) archiver.requiresSecureCoding = true record.encodeSystemFieldsWithCoder(archiver) archiver.finishEncoding() return archivedData } private func recordFromData(archivedData:NSData) -> CKRecord?{ let unarchiver = NSKeyedUnarchiver(forReadingWithData: archivedData) unarchiver.requiresSecureCoding = true let unarchivedRecord = CKRecord(coder: unarchiver) return unarchivedRecord } 

31:10 WWDC 2015 – Session 715 – iOS, OS X entrez la description de l'image ici