2011-10-28 12 views
21

Sé que el almacenamiento de UIImage en los datos principales se ha discutido mucho, como here, pero fue anterior a ios5. Ahora que tenemos la bandera de almacenamiento externo, ¿piensan que sería una buena idea almacenar UIImage directamente en la entidad, como una entidad separada, o aún en el disco?Almacenamiento de UIImage en Core Data con la nueva bandera de Almacenamiento externo

Here es una fuente que explica la opción de almacenamiento externo.

Respuesta

32

Core Data Release Notes for iOS 5.0

Cuando está activado, datos básicos decide heurísticamente en función de cada valor si debe guardar los datos directamente en la base de datos o almacenar un URI a un archivo separado que gestiona para usted. No puede realizar consultas basadas en el contenido de una propiedad de datos binarios si usa esta opción.

Y a partir de su enlace External Binary Data, la heurística parece ser

objetos que son menores que 1 MB se almacenan en la base de datos. Para los objetos que son más grandes, se crea un archivo externo y la base de datos simplemente almacena una referencia a ella.

Así que el siguiente consejo sigue siendo válido: CoreData : store images to DB or not?

  • < tienda de 100kb en la misma mesa que los datos pertinentes
  • < tienda de 1mb en una tabla separada unido a través de una relación que deben evitarse cargando innecesariamente
  • 1MB almacena en el disco y lo hace referencia dentro de Core Data

La bandera conjuntos básicos de datos a seguir ese consejo y automáticamente almacenar imágenes> 1 MB como un archivo de disco independiente.

+1

Entonces, en ese caso, probablemente deberíamos ponerlo en una entidad separada en caso de que esté en el rango 100kb-1mb dado que el almacenamiento externo no cuenta para ese caso? –

+1

Advertencia: hay un error con el almacenamiento de imágenes externas que hace que se cuelgue cuando se elimina, a veces: http://stackoverflow.com/questions/7930427/error-uiimage-deleteexternalreferencefrompermanentlocation-unreconocido-se –

+3

Hay otro error con el almacenamiento externo y migración. Si intentas crear un nuevo modelo y luego usar una migración ligera, perderás todos los 'Datos Binarios' que están almacenados en un archivo externo. – zirinisp

Cuestiones relacionadas