保存在 iOS 绘画应用程序中
Posted
技术标签:
【中文标题】保存在 iOS 绘画应用程序中【英文标题】:Saving in iOS paint app 【发布时间】:2012-06-24 17:24:26 【问题描述】:我在 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 的新手。谢谢你的帮助, -卡尔。
【问题讨论】:
我不认为您真的想将图像保存在用户默认值中。您可能想将其保存在文档文件夹中。 【参考方案1】:您正在尝试将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];
【讨论】:
【参考方案2】: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];
【讨论】:
以上是关于保存在 iOS 绘画应用程序中的主要内容,如果未能解决你的问题,请参考以下文章