2012-05-04 55 views
0

我有一个用户从相机胶卷中选取的图像。像用户一样,可以让设施从UI图像视图保存并加载图像。我现在在单身人员课程中保存了图像,直到应用程序停止运行或设备重新启动。我可以使用NSString保存/加载图像吗?

我可以使用类似于我用于存储文本字符串的代码的图像吗?我曾尝试只是改变到的.text图像配,但勿庸置疑没有这样的运气(这是一个有点遥不可及)

- (IBAction)functionsave:(id)sender { 
NSString *savecontents = _function.text; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:savecontents forKey:@"savecontents1"]; 
[defaults synchronize]; 


- (IBAction)Functionload:(id)sender { 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *loadstring = [defaults objectForKey:@"savecontents1"]; 
[_function setText:loadstring]; 

回答

1

NSString对象是适合保存字符串,而不是图像。如果你想保存以备后用,我建议你到这些图像为PNG保存到你的应用程序的沙盒图像(即文件夹):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

您可以使用保存的图像:

UIImage *myImage = ... 
NSData *data = UIImagePNGRepresentation(myImage); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *appDocsDirectory = [paths objectAtIndex:0]; 
[data writeToFile:[NSString stringWithFormat:@"%@/%@.png", appDocsDirectory , @"myNewFile"] atomically:YES]; 

你然后可以检索图像到一个UIImage的有:

UIImage* thumImage = [UIImage imageWithContentsOfFile:[[NSString stringWithFormat:@"%@/%@.png", appDocsDirectory , @"myNewFile"]]; 

我想用真实的文件是为内存消耗比更好NSUserDefaults的。由于您可以一次加载/卸载内存中的一个文件。

+0

感谢您对此提供指导,听起来不错,对不起,如果这是一个非常基本的问题...保存和恢复代码大概是我的保存和加载按钮在IBAction下?代码的顶部,是在文件的.h中在我想保存并加载图像的类中?当我把它放在“预计”,“在声明列表末尾”时,我总是收到错误。感谢 – JSA986

+0

或者它是AppDelegate文件在应用程序文档目录中我可能会这么做?正如你可能猜到我在编程方面经验不足。 – JSA986

+0

代码的最上面是您需要用您的应用程序文档目录的路径填充文档目录对象的实现代码。 第二段代码应该在IBAction下的保存按钮(记得在“...”处替换你的UIImage)。 第三个例子是加载。 重要注意事项: 这段代码只是一个例子,请记住包括图片未找到/不存在的情况以及NSErrors if writeToFile失败等。 – Neo

相关问题