puedo - pasar fotos de iphone a pc windows 10
CoreData: ¿almacenar imágenes en DB o no? (2)
Primero, siempre almacene sus imágenes en un formato utilizable como PNG o JPEG en lugar de NSData. Esto te ahorrará muchos dolores de cabeza.
En segundo lugar, la regla para almacenar datos binarios es:
- <Tienda de 100kb en la misma tabla que los datos relevantes
- <1mb almacenar en una tabla separada adjunta a través de una relación para evitar cargar innecesariamente
1 MB de almacenamiento en el disco y referenciarlo dentro de Core Data
Actualizar
El almacenamiento dentro de Core Data debe ser binario y puede escribir métodos de acceso para él. Echa un vistazo a esta respuesta: imágenes de datos principales desde el escritorio al iPhone
Actualizar
El código de ejemplo que he vinculado describe cómo crear accesos en tu subclase NSManagedObject que convertirá la imagen hacia adelante y hacia atrás entre un UIImage y datos binarios.
Estoy haciendo una aplicación que toma fotos del sitio web para un nombre de usuario y lo muestra en una UITable con nombre de usuario, luego al hacer clic en el nombre de usuario muestra fotos para este usuario y luego al hacer clic en el nombre de la foto muestra una foto en pantalla completa.
Mi pregunta es: estoy usando NSData para obtener fotos de internet. ¿Debo guardar los datos en CoreData? Al presionar el nombre del usuario, crea NSData y descarga fotos de Internet y las muestra en UITable. Y lleva tiempo.
¿Cuál es el buen enfoque? y ¿Cómo se pueden guardar estas imágenes en CoreData?
Estoy usando este método
NSData *imageData=[flickr dataForPhotoID:firstPhoto.id fromFarm:firstPhoto.farm
onServer:firstPhoto.server withSecret:firstPhoto.secret inFormat:
FlickrFetcherPhotoFormatSquare];
y aquí definición del método dataForPhotoID
- (NSData *)dataForPhotoID:(NSString *)photoID fromFarm:(NSString *)farm
onServer:(NSString *)server withSecret:(NSString *)secret
inFormat:(FlickrFetcherPhotoFormat)format {
#if TEST_HIGH_NETWORK_LATENCY
sleep(1);
#endif
NSString *formatString;
switch (format) {
case FlickrFetcherPhotoFormatSquare: formatString = @"s"; break;
case FlickrFetcherPhotoFormatLarge: formatString = @"b"; break;
}
NSString *photoURLString = [NSString stringWithFormat:@"http://farm%@.static.flickr.com/%@/%@_%@_%@.jpg", farm, server, photoID, secret, formatString];
NSURL *url = [NSURL URLWithString:photoURLString];
return [NSData dataWithContentsOfURL:url];
}
Puedes simplemente almacenar objetos UIImage en CoreData directamente, solo usa el tipo de datos Transformable , y estás listo para ir