2010-11-11 18 views

Respuesta

36

Hay dos opciones principales:

  1. almacenar el archivo en el disco, y luego almacenar la ruta de la imagen en los datos básicos
  2. tienda los datos binarios de la imagen en los datos básicos

Personalmente prefiero la primera opción, ya que me permite elegir cuándo quiero cargar la imagen real en la memoria. También significa que no tengo que recordar en qué formato están los datos sin procesar; Solo puedo usar la ruta a alloc/init un nuevo objeto UIImage.

+0

Lo que quiere decir es que si estoy almacenando la imagen como datos binarios en los datos del núcleo, necesito saber el formato de archivo original al restaurarlo. ¿Hay alguna otra desventaja de almacenar datos en Core Data? – Abhinav

+1

@Abhinav correcto; otra cosa que diría es que manteniendo la imagen fuera de Core Data, mantendrás pequeño el archivo de tu tienda. Si eso es una desventaja sería respondido por muchos perfiles de rendimiento. :) –

+0

Esto significa que mantener archivos de imágenes pesados ​​fuera de los Core Data aumentaría el rendimiento de la aplicación. ¿Lo entendí correctamente? – Abhinav

16

Es posible que desee leer this de la Guía de programación de datos básicos sobre cómo tratar objetos binarios grandes (BLOB). Existen reglas generales para saber qué tamaño de datos binarios debe y no debe almacenarse dentro del almacén de datos principal real.

También puede buscar en Core Data iPad/iPhone BLOBS vs File system for 20k PDFs

Si lo hace lugar de datos binarios dentro de la tienda de datos básicos, que haría bien en tener una entidad "datos" que contiene los datos reales ya que su entidad "Imagen" por separado . Cree una relación entre las dos entidades, de modo que los "Datos" solo se carguen cuando realmente se necesiten. La entidad "Imagen" puede contener los metadatos como título, tipo de datos, etc.

+7

+1 buena idea sobre la entidad separada para almacenar los datos. :) –

0

Con respecto a dónde almacenar los datos/archivos del usuario (encontré que el "soporte de la aplicación" es una ubicación decente dado que tenía dudas de que el usuario moviera, borrara o alterara el archivo de alguna manera que ocasionara que la imagen no pudiera ser recuperada y utilizada más adelante por mi aplicación)

Tome minecraft como ejemplo: ej. "~/Library/Application Support/minecraft/saves /"

Estoy de acuerdo con los comentarios anteriores y almacenes de acceso a las imágenes en los datos centrales, pero almaceno las imágenes como archivos png en su propia carpeta fuera de los datos centrales .