/ / In NSUSer-Standardeinstellung gespeicherte Bilder - iOS, Objective-C, UiimageView

Im NSUSer-Standard gespeicherte Bilder - ios, object-c, uiimageview

Ich habe eine 4-Bild-Ansicht, wenn Sie auf 1. klickenBildansicht Bildübertragung zur nächsten darstellbaren Ansicht Hier kann der Benutzer das Bild mit dem Zeichenblock bearbeiten. Benutzer kann Linie zeichnen oder auf diesem Bild korrigieren Ich möchte dieses Bild in NSUserDefault speichern und wenn Benutzer zurück den ersten Bildschirm das ursprüngliche Bild mit dem vorherigen ausgewählten Bild ersetzen

Bild in NSUserDefault speichern Ich habe diesen Code verwendet.

-(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];
}

Dieser Code funktioniert gut Bild speichern. Ich logge es aber wenn ich gehe, wird das vorherige Controller-Image nicht ersetzt

Ich habe diesen Code für das Setzen eines neuen bearbeiteten Bildes verwendet.

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;
}

Bild nicht verändert, wie kann ich das lösen.

Bitte hilf mir dabei.

Danke im Voraus.

Antworten:

5 für die Antwort № 1

Sie sollten ein nicht speichern UIImage in die NSUserDefaults. NSUserDefaults ist für kleine Datenstücke gedacht, aber nicht für ein ganzes Bild. Schreiben Sie das Image einfach auf die Festplatte (in das Dokumentenverzeichnis) und speichern Sie den Pfad in NSUserDefaults.

Wird geladen:

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

Wiederherstellen:

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

Aber warum übergeben Sie nicht einfach das UIImage-Objekt selbst mithilfe von Eigenschaften zwischen Ihren ViewControllern?


0 für die Antwort № 2

Zuallererst mit NSUserDefault für dieses ding wird nicht empfohlen.

Einige Alternativen:

1) Sie können dieses Bild zuweisen firstViewControllers Eigenschaft, damit Sie später darauf zugreifen können, wenn Sie das Objekt in deklariert haben secondViewController

2) Sie können eine senden NSNotification an firstViewController gedacht, an den du das Bild senden kannst firstViewController von secondViewController

Hoffe das wird dir helfen.