2011-03-10 3 views
1

Quelle est la bonne/meilleure façon de stocker des fichiers sur l'iPhone?Correct façon de stocker des fichiers sur l'iPhone et la récupération des fichiers par l'URL

Je voudrais enregistrer un fichier dans un répertoire sur l'iphone. J'ai lu que le dépôt du répertoire de base des utilisateurs n'est pas une bonne pratique.

Où les fichiers doivent-ils être stockés et comment une URL pour ces fichiers peut-elle être sauvegardée? Ainsi, après avoir enregistré un certain nombre de fichiers sur le téléphone de l'utilisateur, les urls peuvent être stockés afin que les fichiers puissent être gérés ultérieurement. Je souhaite stocker des fichiers, garder un handle sur le fichier et stocker ces handles dans une structure de données ainsi que récupérer les fichiers plus tard en utilisant des URL dans la structure de données afin que les fichiers peuvent être consultés et supprimés.

Quelle serait la manière correcte/optimale de faire cela?

+0

Vous devriez choisir le meilleur répertoire en fonction du type d'information que vous enregistrez. Voir ma [réponse] (http://stackoverflow.com/a/12472910/991816) – DanSkeel

Répondre

-2

Les fichiers sont stockés dans le dossier Documents de l'application.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
[paths lastObject]; 

vous obtiendrez le chemin du document.

Je voudrais alors utiliser NSKeyedArchiver et NSKeyedUnarchiver pour stocker l'URL, et aussi mettre cela dans les documents.

Pour voir ce qu'il y a dans le répertoire Documents, utilisez simplement la méthode NSFileManagercontentsOfDirectoryAtPath:error:, qui renvoie un NSArray pratique. Appelez lastObject et voilà.

Mise à jour: NSURL doit être encodée et décodée avec NSKeyedArchiver et NSKeyedUnarchiver, car ils ne sont pas un objet de base de plists. Bien que vous pourriez les convertir en chaînes, qui sont, alors vous pouvez utiliser [array writeToFile:file atomically:YES]. L'autre option est CoreData mais cela pourrait être un peu trop.

Il est préférable de stocker toutes les URL dans un fichier et de les remplacer par des modifications lorsque les URL sont supprimées et ajoutées.

Vous ne remplissez pas le répertoire de documents de l'utilisateur, vous remplissez le répertoire de documents de l'application. Le dossier documents est l'endroit où vous, mais les fichiers que l'utilisateur a généré. À l'avenir, vous pouvez décider d'ouvrir le répertoire Document sur iTunes afin que l'utilisateur puisse ajouter et supprimer des fichiers de cette façon. Les choses qui ne concernent que l'application doivent être stockées dans le dossier Bibliothèque. J'espère que cela explique ce que j'étais en train de faire un peu mieux. Je semblais avoir l'impression que vous vouliez simplement stocker les URL en tant que fichiers individuels et stocker les poignées. Vous pouvez obtenir les poignées mais en connaissant simplement le répertoire dans lequel vous avez stocké tout. Obtenez un tableau des fichiers dans ce dossier et chargez-les simplement en utilisant un unarchiver ou initWithFileContents: de NSDictionary ou NSArray.

+0

Merci. Comment l'URL du dernier objet est-elle obtenue? – jarryd

+0

Comment puis-je obtenir les URL, ne pas les stocker. Je veux obtenir les urls afin que je puisse supprimer des objets du répertoire. – jarryd

+0

Utilisez NSFileManager subpathsAtPath: et puis stringByAppendingPathComponent: pour obtenir l'URL. – NebulaFox

Questions connexes