我有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"]);
试试这个步骤:
存储ui:
[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation([UIImage imageNamed:@"yourimage.png"])forKey:@"your_key"];
检索UIImage:
NSData* imageData = [[NSUserDefaults standardUserDefaults]objectForKey:@"your_key"];
UIImage* image = [UIImage imageWithData:imageData];
您得到nil
,因为您错误地使用stringForKey
来检索您的对象,但它不是字符串。试试以下命令:
NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
虽然技术上是正确的,但我不建议将图像存储在plist中:阅读此回答以了解更多细节。
您正在获得NULL值,因为您存储了NSData
对象与关键字"image"。但是您正在尝试检索NSString
对象。无论何时存储和检索相同的键,都应该使用相同的对象类型。
你可以试试
NSData* imgData2=[[NSUserDefaults standardUserDefaults] objectForKey:@"image"]
NSLog(@"nsuserdefauls is %@",imgData2);
您可以从上面的NSLog中看到对象类型。