0

我有 EAGLview 来显示覆盖图像并截取屏幕截图,然后将其保存以NSUserDefaultsviewcontroller.

但是当我将图像存储到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"]);
4

3 回答 3

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];
于 2014-06-16T09:13:03.870 回答
0

你得到nil是因为你错误地stringForKey用来检索你的对象,但它不是一个字符串。尝试以下操作:

NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];

此外,虽然在技术上是正确的,但我不建议将图像存储在 plist 中:阅读此答案以获取更多详细信息。

于 2014-06-16T09:15:26.227 回答
0

您获得 NULL 值是因为您NSData使用键“图像”存储了对象。但是您正在尝试检索NSString对象。每当您存储和检索相同的键时,您都应该使用相同的对象类型。

你可以尝试类似的东西

NSData* imgData2=[[NSUserDefaults standardUserDefaults] objectForKey:@"image"]
NSLog(@"nsuserdefauls is %@",imgData2);

您可能会从上面的 NSLog 中看到对象类型。

于 2014-06-16T09:15:57.180 回答