Tengo un conjunto de datos que también contiene imágenes. Quiero guardar estos datos en caché. ¿Debo almacenarlos en el sistema de archivos o en los datos centrales y por qué?¿Está almacenando imágenes en Core Data o como archivo?
Respuesta
Hay dos opciones principales:
- almacenar el archivo en el disco, y luego almacenar la ruta de la imagen en los datos básicos
- 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
.
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.
+1 buena idea sobre la entidad separada para almacenar los datos. :) –
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 .
- 1. ¿Está almacenando imágenes en SQL Server?
- 2. ¿Debo guardar en plist o Core Data?
- 3. ¿Está almacenando la imagen en la base de datos directamente o como datos base64?
- 4. NSCoding VS Core data
- 5. Core Data y multiprocesamiento
- 6. Relaciones indexadas en Core Data
- 7. iPhone Core Data Relationship
- 8. Introducción a Core Data
- 9. Core data/NSFetchedResultsController error
- 10. Core Data Memory Management
- 11. Eliminar objeto en Core Data
- 12. Core-Data willSave: método
- 13. Prueba Core Data Application
- 14. iOS Core Data - Relationships
- 15. Cargando un archivo CSV en Core Data managed sqlite db
- 16. ¿Cómo puedo saber dónde está mongoDB almacenando datos? (no está en el valor predeterminado/data/db!)
- 17. Making Core Data Thread-safe
- 18. almacenando números como varchar
- 19. core data iCloud fusionar protocolo
- 20. ¿Está almacenando una matriz o cadena de caracteres muy grande?
- 21. Almacenamiento de NSNumber opcional en Core Data
- 22. Core Data-predicado con fechas
- 23. ¿Cómo recuperar valores distintos en Core Data?
- 24. Cómo exportar la entidad Core Data a un archivo CSV
- 25. Nuevo en Core Data para iphone
- 26. Core Data Spotlight Integration en iOS
- 27. Almacenamiento de UUID en Core Data
- 28. ¿Cómo usar banderas binarias en Core Data?
- 29. Actualizar registro utilizando Core Data en iOS
- 30. Recuperar objeto por propiedad en Core Data
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
@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. :) –
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