verificar transferir puedo pasar para funciona fuentes empresarial desconocidas desarrollador datos confiable como apple app activar ios core-data

transferir - Datos principales para la tienda de iOS en el archivo de registro externo



transferir a ios no funciona (2)

Es la primera vez que hago una pregunta aquí, así que por favor vaya fácil si no proporciono suficiente información. Básicamente, parte de mi aplicación iOS les permite a los usuarios tomar una foto que se almacenará en una tienda Core Data. El atributo es un tipo Transformable, y he creado una subclase NSManagedObject que simplemente uso para establecer su atributo de imagen a la nueva imagen proporcionada por el usuario.

Sé que almacenar archivos de gran tamaño en Core Data es una mala idea, y es por eso que estaba emocionado cuando vi la opción "Almacenar en el archivo de registro externo" debajo del atributo de imagen en la entidad Core Data. Sin embargo, el rendimiento de mi aplicación dice lo contrario, tomar varios segundos en un iPhone 5 para cargar solo unas pocas imágenes (que sé que no parece mucho tiempo, pero teniendo en cuenta lo poderoso que es el iPhone 5, los dispositivos más antiguos probablemente tomarían mucho más tiempo con los mismos datos).

He mirado alrededor, y algunas personas dicen que la opción Almacenar en archivo de registro externo solo se aplica al entorno OS X, a pesar de que está disponible en una aplicación de iOS. Sin embargo, también vi esto en el documento "Novedades de iOS 5" de Apple (es el penúltimo elemento de Datos centrales, cerca del final):

Los objetos gestionados admiten dos características nuevas importantes: relaciones ordenadas y almacenamiento externo para valores de atributo. Si especifica que el valor de un atributo de objeto gestionado puede almacenarse como un registro externo, Core Data determina heurísticamente por valor si debe guardar los datos directamente en la base de datos o almacenar una URL en un archivo separado que gestiona para ti

Entonces mi pregunta es, ¿quién tiene razón? ¿Es cierto que Apple cometió un error al dar esta opción para las aplicaciones de iOS, y que en realidad no hace nada a menos que esté en la Mac, o realmente hace algo y no estoy configurándolo de la manera correcta, o es haciendo lo que se supone que debe hacer y el rendimiento es malo de todos modos?

He visto algunas guías que explican cómo almacenar archivos grandes (como imágenes) como archivos, y guardarlos en el almacén de datos centrales, pero dado que esto es esencialmente lo que está haciendo esta nueva opción, o tal vez debería estar haciendo, No estoy seguro si seguir estas guías incluso ayudaría.

Realmente lo siento si esto se ha preguntado antes. Normalmente estaré bien con resolver esto por mi cuenta, pero Core Data es totalmente nuevo para mí, y todavía no estoy seguro de cómo me las arreglé para chirriar por la configuración inicial. ¡Gracias por cualquier ayuda que pueda ofrecer!


¿quién tiene razón?

el docset de iOS para la clase NSAttributeDescription menciona los allowsExternalBinaryDataStorage y setAllowsExternalBinaryDataStorage: hay pocas posibilidades de que Apple allowsExternalBinaryDataStorage un error.

¿Estás haciendo algo mal o es lento de todos modos?

Tú dijiste eso

El atributo es un tipo Transformable

Pero Core Data tiene un tipo de Binary data . Tal vez solo este está vinculado a la capacidad de almacenamiento externo.

si eso no es así, no tenemos suficiente información aquí:

  • ¿Cuántas imágenes almacenas?
  • ¿Cuáles son sus tamaños?
  • ¿Traes automáticamente todas las imágenes?

Además, el documento de Apple establece que:

Core Data decide heurísticamente por valor ...

  • ¿Usó una migración o está empezando desde cero?

Podrías echarle un vistazo a la zona de pruebas de tu aplicación para ver si tus fotos están realmente guardadas fuera de CoreData.

Espero que esto ayude.


¡Buena pregunta!

Verifique esta publicación: Almacenamiento de blobs en una ubicación externa utilizando la opción integrada CoreData

Aparentemente debería funcionar También debe probarlo en el simulador e inspeccionar la carpeta de datos de la aplicación para ver si las carpetas se crearon como se describe (~ / Library / Application Support / iPhone Simulator / ... - descubrirá el resto de la ruta). También podría inspeccionar el archivo sqlite con el comando sqlite3 para ver si los datos binarios están en la base de datos.

Personalmente, no he usado esta opción, ya que preferiría guardar las imágenes en una carpeta y almacenarlas en la base de datos. De esta forma, será más fácil crear un objeto UIImage desde el archivo que se mostrará, tendrá un mejor control sobre qué se va y así sucesivamente. Sin embargo, tomará un poco de trabajo extra!

Espero que te ayude.