存储在NSUSer默认值中的图像

Jit*_*dra -1 objective-c uiimageview ios

我有一个4 imageview,如果点击第一个imageview图像转移到下一个可绘制视图这里用户可以使用绘图板编辑图像.用户可以在该图像上绘制线条或矩形我想将该图像保存到NSUserDefault,当用户返回第一个屏幕时,用原先选择的图像替换原始图像

将图像保存到NSUserDefault我使用了这段代码.

-(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];
}
Run Code Online (Sandbox Code Playgroud)

此代码可以很好地保存图像.我记录它,但当我去前一个控制器图像没有被替换

我使用此代码设置新编辑的图像.

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;    
    }
Run Code Online (Sandbox Code Playgroud)

图像没有改变我怎么解决这个问题.

请帮我解决这个问题.

提前致谢.

Geo*_*org 5

你不应该在储存UIImageNSUserDefaults.NSUserDefaults用于小块数据但不是整个图像.只需将映像写入磁盘(进入文档目录)并将路径保存到NSUserDefaults中.

加载:

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

恢复:

NSString *pathToFile = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
NSData *imageData = [NSData dataWithContentsOfFile:pathToFile];
UIImage *image = [UIImage imageWithData:imageData];
Run Code Online (Sandbox Code Playgroud)

但是你为什么不直接使用属性在ViewControllers之间传递UIImage对象呢?