我在iOS应用中保存绘画描边有点麻烦。我已经使用NSUserDefaults在我的应用程序中成功保存了文本,但我不确定保存图像的工作原理是否相同,无论如何,这就是我所拥有的:
-(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。
答案 0 :(得分: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];
}
答案 1 :(得分: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];