2016-05-04 2 views
0

J'essaie de stocker des fichiers dans mon application dans CloudKit en utilisant CKAssets. Tout fonctionne correctement, et les mises en ligne et les téléchargements à l'aide de CKRecord + CKAsset fonctionnent correctement, à l'exception de certains types de fichiers, notamment les documents Numbers, Keynote et Pages. Lorsque je tente de sauvegarder ces CloudKit, je reçois l'erreur suivante:CloudKit - utiliser CKAsset avec les fichiers du paquet

CKOperationBase error = <CKError 0x12ddeece0: "Partial Failure" (2/1011); "Failed to modify some records"; partial errors: { 
    FileAttachments.169DBAC2-8A14-43F0-9F5A-F851E7FF623B:(CJCloudKitPrivateZoneName:__defaultOwner__) = <CKError 0x12f05dcc0: "Invalid Arguments" (12/1017); "Not a regular file"> 

Je pense que cela a quelque chose à voir avec les fichiers étant « fichiers package » ... autrement dit, il est un sous-répertoire caché sous ceux qui vous pouvez voir lorsque vous utilisez "Afficher les contacts du package".

Dans ce cas, comment télécharger le fichier sur CloudKit? Y a-t-il des API pour détecter que ce sont des 'fichiers de paquet', et aussi pour les compresser dans un format qui peut être exporté? Il serait assez décevant si je ne peux pas télécharger un document Keynote sur un appareil et le rendre accessible (en tant que document Keynote) sur un autre appareil via ma propre application.

+0

Voir http://stackoverflow.com/questions/27713479/objective-c-how-to-determine-if-a-folder-is-a-package – rmaddy

Répondre

0

trouvé la solution ici: https://stackoverflow.com/a/36874037/145552

Fondamentalement, avec l'option NSFileCoordinator utilise NSFileCoordinatorReadingForUploading était la clé ... ce zips le fichier si nécessaire, et vous pouvez passer le newURL du bloc dans un CKAsset et il fonctionne correctement . J'utilisais NSFileCoordinatorReadingWithoutChanges avant de trouver cette solution.

0

Pas de solution magique ici, vous devrez vous-même compresser et décompresser le paquet.