2012-06-24 105 views
0

我在保存iOS应用程序中的笔画时遇到了一些麻烦。我已经成功地通过使用保存NSUserDefaults的文字在我的应用程序,但我不知道,如果保存图像以同样的方式,反正,这是我有:在iOS应用程序中保存

-(IBAction)saveImage:(id)sender 
{ 
    UIImage *saveImage = drawImage.image; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:saveImage forKey:@"image"]; 
    [defaults synchronize]; 
} 

每当我在我的应用程序打保存按钮(saveImage),Xcode的输出响应说, - [NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<UIImage: 0x1f076ee0>' of class 'UIImage'

我不确定这是什么意思。 任何帮助将不胜感激,因为我是Xcode和Objective-C的新手。感谢您的帮助, -Karl。

+1

我不认为你真的想保存用户默认图像。也许你想把它保存在文档文件夹中。 – pt2ph8

回答

2

您正在尝试保存UIImage作为您的NSUserDefaults中的值。你需要做的是将UIImage转换为NSData并保存。

-(IBAction)saveImage:(id)sender 
{ 
    UIImage *saveImage = drawImage.image; 

    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(saveImage)]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:imageData forKey:@"image"]; 
    [defaults synchronize]; 
} 
+0

太棒了!非常感谢! – 2456789

0

NSUserDefault不能直接保存UIImage但你可以将它们保存为NSData。对于这个转换图像冷杉,然后保存此

NSData *imageData = UIImagePNGRepresentation(drawImage.image); 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:imageData forKey:@"imageData"]; 
    [defaults synchronize]; 

用于将NSData转换回UIImage使用imageWithData:例如

UIImage *myImage = [UIImage imageWithData:imageData]; 
相关问题