/ / Imágenes almacenadas en NSUSer Predeterminado - ios, Objective-C, uiimageview

Imágenes almacenadas en NSUSer Predeterminado - ios, object-c, uiimageview

Tengo una vista de imagen de 4 si hago clic en 1stimagen vista transferencia de imagen a la siguiente vista dibujable aquí el usuario puede editar la imagen usando el panel de dibujo. el usuario puede dibujar línea o rectitud en esa imagen, quiero guardar esa imagen en NSUserDefault y cuando el usuario regrese a la primera pantalla, reemplace esa imagen original con la imagen seleccionada previamente

Guardar imagen en NSUserDefault utilicé este código.

-(IBAction)SaveBtn:(UIBUttonSender*)sender
{
[delegate.imagesDef setObject:UIImagePNGRepresentation(previewImageView.image) forKey:@"first"];

NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"first"];
delegate.image = [UIImage imageWithData:imageData];

NSLog(@"%@",[delegate.image description]);
NSLog(@"%@",imageData);
[delegate.imagesDef synchronize];
}

Este código funciona bien guardar imagen. lo registro pero cuando voy la imagen del controlador anterior no se reemplaza

Utilicé este código para establecer una nueva imagen editada.

if([delegate.imagesDef objectForKey:@"first"])
{

NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"first"];
delegate.image = [UIImage imageWithData:imageData];

NSLog(@"%@",[delegate.image description]);
NSLog(@"%@",imageData);

NSLog(@"%@",delegate.image);

FirstImageView.image=delegate.image;
}

la imagen no ha cambiado, ¿cómo puedo resolver esto?

Por favor ayudame en esto.

gracias por adelantado.

Respuestas

5 para la respuesta № 1

No deberías almacenar un UIImage en el NSUserDefaults. NSUserDefaults está destinado a pequeños datos pero no a una imagen completa. Simplemente escriba la imagen en el disco (en el directorio de documentos) y guarde la ruta en NSUserDefaults.

Cargando:

NSString *pathToFile;
UIImage *image;
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:pathToFile atomically:YES];
[[NSUserDefaults standardUserDefaults] setObject:pathToFile forKey:@"image"];

Restaurando

NSString *pathToFile = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
NSData *imageData = [NSData dataWithContentsOfFile:pathToFile];
UIImage *image = [UIImage imageWithData:imageData];

Pero, ¿por qué no estás pasando el objeto UIImage en sí mismo entre tus ViewControllers usando propiedades?


0 para la respuesta № 2

Primero que nada usando NSUserDefault para esto no se recomienda

Pocas alternativas:

1) puede asignar esta imagen a firstViewControllers propiedad para que pueda acceder más tarde si tiene su objeto declarado en secondViewController

2) Puedes enviar un NSNotification a firstViewController pensó que puede enviar la imagen a firstViewController de secondViewController

Espero que esto te ayudará.