web-dev-qa-db-fra.com

Stocker des images dans Core Data ou sous forme de fichier?

J'ai ensemble de données qui contient des images aussi. Je veux mettre en cache ces données. Devrais-je les stocker sur un système de fichiers ou sur des données de base et pourquoi?

32
Abhinav

Il y a deux options principales:

  1. Stockez le fichier sur le disque, puis stockez le chemin d'accès à l'image dans les données principales.
  2. Stocker les données binaires de l'image dans les données principales

Personnellement, je préfère la 1ère option, car elle me permet de choisir quand je veux charger l’image réelle en mémoire. Cela signifie également que je n'ai pas à me souvenir du format dans lequel se trouvent les données brutes; Je peux simplement utiliser le chemin vers alloc/init, un nouvel objet UIImage.

36
Dave DeLong

Vous voudrez peut-être lire this du Core Data Programming Guide pour savoir comment traiter les gros objets binaires (BLOB). Il existe des règles empiriques concernant la taille des données binaires qui doivent et ne doivent pas être stockées dans le magasin principal de données principal.

Vous pouvez également consulter Core Data iPad/iPhone BLOBS vs Système de fichiers pour les fichiers PDF 20k

Si vous placez des données binaires dans le magasin de données principal, vous feriez bien de disposer d'une entité "Data" contenant les données réelles et de séparer votre entité "Image". Créez une relation entre les deux entités, de sorte que les "données" ne doivent être chargées que lorsqu'elles sont réellement nécessaires. L'entité "Image" peut contenir les métadonnées telles que le titre, le type de données, etc.

16
westsider

En ce qui concerne l'endroit où stocker les données/fichiers de l'utilisateur (j'ai trouvé que le "support d'application" était un endroit convenable, étant donné que je me méfiais du déplacement, de la suppression ou de la modification du fichier par l'utilisateur, de sorte que l'image ne puisse pas à récupérer et à utiliser ultérieurement par mon application)

Prenons Minecraft comme exemple: Eg. "~/Bibliothèque/Application Support/minecraft/save /"

Je suis d'accord avec les commentaires précédents et les chemins d'accès aux images dans les données de base, mais stocke les images elles-mêmes sous forme de fichiers png dans leur propre dossier, en dehors des données de base. 

0
eric bob