iPhone SDK - Ajout de contenu compressé dans les ressources et décompressé puis dans le dossier Documents
Question
J'ai des ressources (zip) qui doivent être expédiés avec mon application iphone. Lorsque l'application se lance pour la première fois, ce fichier compressé doit être déplacé / copié dans le dossier Documents et décompressez-y. L'utilisateur peut alors ajouter d'autres fichiers sur ce chemin de l'application. Quelqu'un peut-il s'il vous plaît suggérer comment puis-je y parvenir?
Merci!
La solution
En fonction de votre commentaire ci-dessus:
La raison pour laquelle je veux ajouter un comprimé des ressources, car il y a plusieurs des dossiers. Si je ne compressent pas alors je vais besoin de déplacer des fichiers individuellement. Mauvais ont également besoin de maintenir une liste de fichiers quelque part pour que je puisse lire le fichier nom, puis les déplacer. j'ai pensé et décompressé était passer comme un éclair un simple solution.
Vous pouvez ajouter tous les fichiers dans un dossier dans votre paquet. Lorsque l'application lance pour la première fois utiliser énumération rapide pour exécuter dans le dossier et ce que jamais il trouve dans ce dossier, il copie dans le dossier Documents. est un peu plus complexe Manipulation des dossiers dans des dossiers (peut-être ajouter récursivité). De cette façon, vous n'avez pas à vous soucier de zip ou de goudron, ni de garder un répertoire de fichiers à installer.
Il suffit de placer le dossier de fichiers que vous voulez dans le dossier des ressources de Xcode et lui dire d'importer comme un dossier non en tant que groupe. De cette façon, les fichiers sont installés dans vos ressources dans un dossier au lieu de simplement sous forme de fichiers individuels dans tous les sens.
EDIT:
Mieux encore, faites ce que je dis de mettre tous les fichiers que vous voulez dans un dossier, ajouter à votre projet, mais pas comme un « groupe », puis à la première utilisation de lancement:
[[NSFileManager defaultManager] copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error];
et il copiera votre répertoire entier d'un endroit à l'autre. FACILE!
Autres conseils
Ajoutez le cadre de libz.dylib
à votre projet, et inclure catégorie gzip NSData
de Deusty qui vous donnera des méthodes de compression / décompression.
Bien que ce soit disponible en utilisant le libz.dylib, il est vraiment inutile car il vous sauver peu (le cas échéant) l'espace. Vous paquet d'applications est déjà compressé lors de son transfert au téléphone. La compression sur le dessus de la compression donne généralement peu de compression supplémentaire.
Essayez vous-même. Vous pouvez constater que l'expédition de votre application avec le contenu décompressé peut prendre autant d'espace que le contenu compressé.