删除存储在NSSUserDefaults中的图像

时间:2013-05-13 14:58:54

标签: ios objective-c cocoa-touch nsuserdefaults

我试图让用户选择删除从相机中拾取的图像,然后将其保存在NSUserDefaults中,然后传递到另一个视图。我似乎无法删除图像。它最初删除了图像,但仍将原始拾取的图像放在传递给它的另一个视图上,并在重新加载视图时重新出现。

我需要在NSUserDefaults中阅读viewDidLoad方法吗?我尝试了一个if语句,只有在NSUserDefaults viewDidLoad myPicture !=nil但仍有相同的行为

时才会读出 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; if ([prefs objectForKey:@"image2"]) { NSData *imgData = [prefs objectForKey:@"image2"]; self.engineersPicture.image = [UIImage imageWithData: imgData]; } 方法

viewDidLoad中:

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
DebugLog(@"info dict: %@", info);
[picker dismissModalViewControllerAnimated:YES];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
self.engineersPicture.backgroundColor = [UIColor whiteColor];
self.engineersPicture.image = image;
NSData *imageData2 = UIImageJPEGRepresentation(image, 0.5f);
NSString *path2 = [ICUtils pathForDocument:@"engineersPicture.png"];
[imageData2 writeToFile:path2 atomically:NO];



NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:imageData2 forKey:@"image2"];
[prefs synchronize];
self.engineersPicture.image = [UIImage imageWithData:imageData2];

[picker dismissModalViewControllerAnimated:YES];

}

获取图像并保存到NSUserDefaults:

- (IBAction)deletePicture:(id)sender {

self.myPicture.image = nil;

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"image2"];
[[NSUserDefaults standardUserDefaults]synchronize ];

}

删除图片:

{{1}}

1 个答案:

答案 0 :(得分:0)

修好了

 - (IBAction)deletePicture:(id)sender {
 self.engineersPicture.image  = [UIImage imageNamed: @"user.png"];

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"image2"];
[[NSUserDefaults standardUserDefaults]synchronize ];

UIImage *image = [UIImage imageNamed: @"user.png"];
NSData *imageData2 = UIImageJPEGRepresentation(image, 0.5f);
NSString *path2 = [ICUtils pathForDocument:@"engineersPicture.png"];
[imageData2 writeToFile:path2 atomically:NO];
}