我有一个用户从相机胶卷中选取的图像。我喜欢用户具有从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];
答案 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更适合内存消耗。由于您可以一次从内存加载/卸载一个文件。