我有EAGLview显示叠加图片并截屏,然后将其保存在NSUserDefaults
中,以便从viewcontroller
进行检索。
但是,当我将图像存储到photo album
时,它存储但不存储到NSUserDefaults
。所以,我得到NULL
值。
UIImage *glImage = [self glToUIImage];
self.screensht = [self createSavableImage:glImage];
UIImageWriteToSavedPhotosAlbum(self.screensht, nil, nil, nil);
NSData* imgData1=UIImagePNGRepresentation(self.screensht);
[[NSUserDefaults standardUserDefaults] setObject:imgData1 forKey:@"image"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSLog(@"nsuserdefauls is %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"image"]);
答案 0 :(得分:0)
尝试以下步骤:
存储UIImage:
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation([UIImage imageNamed:@"yourimage.png"])forKey:@"your_key"];
要回复UIImage:
NSData* imageData = [[NSUserDefaults standardUserDefaults]objectForKey:@"your_key"];
UIImage* image = [UIImage imageWithData:imageData];
答案 1 :(得分:0)
您得到nil
,因为您错误地使用stringForKey
来检索您的对象,但该对象不是字符串。请尝试以下方法:
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
此外,虽然技术上正确,但我不建议将图像存储在plist中:read this answer以获取更多详细信息。
答案 2 :(得分:0)
您正在获取NULL值,因为您使用键" image"存储了NSData
对象。但是您正在尝试检索NSString
对象。每当存储和检索相同的密钥时,都应该使用相同的对象类型。
您可以尝试类似
的内容NSData* imgData2=[[NSUserDefaults standardUserDefaults] objectForKey:@"image"]
NSLog(@"nsuserdefauls is %@",imgData2);
您可能会从上面的NSLog中看到对象类型。