NSUserDefaults存储空图像值

时间:2014-06-16 09:08:49

标签: ios uiimage nsuserdefaults nsdata eaglview

我有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"]);

3 个答案:

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