Datos básicos con una propiedad UIImage: ¿usa un UIImage o NSData?

Ha estado usando Core Data por un minuto. En algún momento en algún lugar del pasado, decidí que cualquier atributo de image en las subclasss NSManagedObject debería ser instancias de NSData. No recuerdo exactamente qué informaron esa decisión, pero es algo que aprendí hace años y siempre he insistido en hacerlo. Cuando quería un UIImage, tenía una propiedad readonly en mi subclass NSManagedObject cuyo getter crearía una instancia UIImage a partir de los datos utilizando una de las funciones UIImageRepresentation.

Ahora estoy trabajando en un nuevo proyecto, y se me ocurre que la aplicación de ejemplo PhotoLocations de Apple (Core Data Transformable Attributes) realmente usa un UIImage para la propiedad persistente. ¿Por qué? Por razones de simplicidad, sin duda es más fácil, no hay necesidad de esa llamada de function UIImageRepresentation.

Soy consciente de cosas como "almacenar en un file de logging externo" y tal, mi pregunta no es sobre eso, ni siquiera si las imágenes deberían estar en su propia entidad, relacionadas con mi entidad original, es simplemente si o no debería usar UIImage o NSData como el tipo para una propiedad persistente.

Ha sido difícil determinar qué se considera una mejor práctica o cuál es el inconveniente de una u otra forma. Cualquier idea sería apreciada.

Siempre almaceno datos en un formatting que es legible por cualquier persona. Hace que los datos sean más fáciles de transmitir, se usan en múltiples sistemas, evitan la desaprobación, etc.

Cuando almaceno una image, la guardo en un formatting PNG en lugar de UIImage. ¿Por qué?

  • UIImage podría cambiar.
  • Es posible que desee uploadlo a un server.
  • Puede que necesite leer el file en OS X.
  • Tal vez quiera transportarlo más tarde.

Cuando se trata de datos, me gusta pensar solo en el aquí y ahora.