2010-11-11 3 views

Répondre

36

Il y a deux options principales:

  1. Enregistrez le fichier sur le disque, puis stocker le chemin de l'image dans les données de base
  2. Stocker les données binaires de l'image dans les données de base

Je préfère personnellement 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 juste utiliser le chemin à alloc/init un nouvel objet UIImage.

+0

Alors voulez-vous dire si je stocke l'image en tant que données binaires dans les données de base, j'ai besoin de connaître le format de fichier d'origine lors de la restauration. Y a-t-il un autre inconvénient de stocker des données dans les données de base? – Abhinav

+1

@Abhinav correct; l'autre chose que je dirais est qu'en gardant l'image hors des données de base, vous gardez votre fichier de magasin petit. Que ce soit un inconvénient serait répondu par lots et beaucoup de profil de performance. :) –

+0

Donc, cela signifie que garder les fichiers image plus lourds sur le côté des données de base augmenterait les performances de l'application. Est-ce que je l'ai compris correctement? – Abhinav

16

Vous pouvez lire this dans le Guide de programmation des données de base sur la gestion des objets volumineux binaires (BLOB). Il existe des règles approximatives pour les tailles de données binaires qui devraient et ne devraient pas être stockées dans le magasin de données de base réel.

Vous pourriez aussi chercher à Core Data iPad/iPhone BLOBS vs File system for 20k PDFs

Si vous ne placez des données binaires dans les magasins de base de données, vous feriez bien d'avoir une entité « données » qui contient les données réelles et d'avoir votre entité « Image » séparée . Créez une relation entre les deux entités, de sorte que les "Données" n'aient besoin d'être chargées qu'en cas de besoin. L'entité "Image" peut contenir les méta-données telles que le titre, le type de données, etc.

+7

+1 bonne idée sur l'entité séparée pour stocker les données. :) –

0

En ce qui concerne où stocker les données/fichiers utilisateur (j'ai trouvé "support de l'application" pour être un emplacement décent étant donné que je se méfier de l'utilisateur en déplaçant, supprimant ou altérant le fichier d'une manière qui ferait que l'image ne puisse pas être récupérée et utilisée plus tard par mon application)

Prenez minecraft comme exemple: par exemple. "~/Bibliothèque/Application Support/minecraft/enregistre /"

Je suis d'accord avec les commentaires précédents et les chemins de stockage vers les images dans les données de base, mais sinon stocker les images elles-mêmes en tant que fichiers PNG dans leur propre dossier en dehors des données de base .