我可以使用NSString保存/加载图像吗?

时间:2012-05-04 15:17:09

标签: image nsstring xcode4.3

我有一个用户从相机胶卷中选取的图像。我喜欢用户具有从UI图像视图保存和加载图像的功能。我现在将图像保存在单个类中,这很好,直到应用程序停止运行或设备重新启动。

我可以使用与我用于存储文本字符串的代码类似的内容吗?我试过将.text更改为.image但不出所料没有这样的运气(这有点触及)

- (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 个答案:

答案 0 :(得分: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更适合内存消耗。由于您可以一次从内存加载/卸载一个文件。