NSUserDefaults存储空图像值



我有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中看到对象类型。

相关内容

  • 没有找到相关文章

最新更新