Comment utiliser iCloud pour stocker et synchroniser des fichiers d'application
J'ai déjà une Application iPhone qui stocke les données dans un fichier dans le local dossier de documents. Maintenant, j'ai appris beaucoup sur iCloud technologies et ma première question était: est-il possible d'utiliser iCloud comme un répertoire quand, parfois, j'ai vérifier les nouvelles versions?
Je veux dire: puis-je éviter d'utiliser UIDocument, fichier coordonnateurs et fichier présentateurs? Je veux juste savoir si pouvait traiter iCloud comme un dossier spécial et de n'utiliser NSFileManager de le pousser et de récupérer des fichiers.
Dernière note: je n'utilise pas de Base de Données ou une base de données, je n'ai qu'un fichier de données.
Edit:
J'ai déjà lu l'officiel d'Apple iCloud documentation afin de ne pas me lier à eux. J'ai seulement besoin de quelques exemples de code.
Vous devez vous connecter pour publier un commentaire.
Je sais comment vous vous sentez, iCloud est un peu intimidant. Cependant, je pense qu'il n'y a pas moyen de contourner UIDocument, fichier coordonnateurs etc. et pour tout simplement utiliser iCloud comme un simple dossier.
Si vous êtes à la recherche pour un facile de comprendre le code de l'échantillon, veuillez jeter un oeil à ce post:
iCloud notions de base et exemples de code
J'ai inclus un exemple complet qui couvre les minimums nus de iCloud et à peu près l'utilise comme un répertoire. Peut-être que cela rend moins difficile pour vous d'utiliser UIDocument, fichier coordonnateurs etc.
Mais, comme vous, je souhaite qu'il y avait un moyen plus facile et plus compatible avec le bon vieux dossier documentaire idée. Toutefois, comme cela est iCloud et qu'iCloud n'plusieurs choses en plus (comme tout garder en synchronisation sur différents appareils, la mise à jour constante de cloud, etc.), il n'y aura pas moyen de contourner UIDocument etc.
Ce qui "fonctionne" pour moi, c'est tout simple:
Apple dit d'appeler sur la non-thread d'INTERFACE utilisateur. Avoir les fichiers "déplacé". Vous pouvez interroger via
NSMetaDataQuery
comme ceci:Échantillon de dénombrement par les résultats de la requête:
Et de commencer à "télécharger" du béton fichier:
Avec des chèques pour les fichiers "en cours de téléchargement":
Je ne m'attendais pas le code de cette longue et désolé pour offrir de très brut extraits ici. Pas l'intention de dire ci-dessus peut être une production de qualité de code, il suffit de partager le concept.
Je n'ai pas encore soumis qu'à l'intérieur de mon application à Apple, ne peut donc pas dire que ce serait "approuvé" sur l'app store (si ils trouvent ou de soins...)
Vous pouvez télécharger des fichiers individuels à iCloud à l'aide de NSFileManager. J'ai posté un solution complète sur la façon de le faire sur mon blog, mais voici pertinentes NSFileManager code:
Il n'y a pas vraiment moyen de la contourner à l'aide de UIDocument. J'ai essayé de le faire dans l'une de mes premières utilisations d'iCloud, mais il s'est avéré être une catastrophe sans UIDocument. À l'aide de UIDocument au premier abord ressemble à beaucoup de travail supplémentaire, mais il n'est pas.
Vous pouvez facilement sous-classe UIDocument en moins d'une heure et qu'il fonctionne avec n'importe quel type de fichier (il suffit de régler le
content
propriété NSData). Il fournit également de nombreux avantages sur le système de fichier standard:Honnêtement, passer une heure ou deux de lecture sur la documentation d'Apple et en utilisant ensuite il vaut bien le temps et la puissance du cerveau. Un bon point de départ l'article sur iCloud de stockage de Document peut être trouvé dans Apple Developer Documentation.
J'ai écrit un UIDocument sous-classe qui fonctionne avec n'importe quel type de fichier (NSData en particulier). Vous pouvez visualiser, télécharger et modifier le code de la UIDocument sous-classe sur GitHub.
Créer le document:
Enregistrer un document existant:
Enregistrer un nouveau document:
Vous pouvez également synchroniser tous les fichiers stockés dans iCloud en utilisant NSMetadataQuery. Apple fournit un très bon exemple de l'utilisation de NSMetadata requête pour synchroniser les fichiers d'application. Assurez-vous également de vérifier iCloud avant d'effectuer ces opérations (astuce: utiliser la
ubiquityIdentityToken
méthode sur NSFileManager).Vous pouvez aussi envisager d'utiliser une solution open-source de la bibliothèque comme iCloud Synchronisation. L'iCloud Synchronisation de documents de projet, il est très facile de stocker et de synchroniser des fichiers d'application:
Dans presque tous les iCloud méthode de Synchronisation, tout ce que vous avez à faire est de passer dans votre fichier de données en tant que paramètre et ensuite, il se charge du reste (la sauvegarde, la synchronisation, etc.).
AVERTISSEMENT: je suis un contribuant développeur pour le projet open-source, iCloud Synchronisation. Cependant, je crois que ce projet sera bénéfique pour vous, et qui est pertinente à cette question. Ce n'est pas une promotion ou de la publicité.
Utiliser ce code: