【问题标题】:Saving a UIImage to NSUserDefaults将 UIImage 保存到 NSUserDefaults
【发布时间】:2012-06-13 15:14:33
【问题描述】:

所以我试图将从 UIImagePickerController 获取的图像保存到 NSUserDefaults 以便我可以在我生成的相册中打开它,但是当我调用委托方法来保存图片时,我收到错误:

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<UIImage: 0x1d0bf0>' of class 'UIImage'.  Note that dictionaries and arrays in property lists must also contain only property values.`

代码如下:

self.savedPic = [[UIImage alloc] init];
self.savedPic = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[[NSUserDefaults standardUserDefaults] setValue:self.savedPic forKey:[NSString stringWithFormat:@"image_%i",imageCount]];

【问题讨论】:

标签: objective-c uiimagepickercontroller nsuserdefaults


【解决方案1】:

您应该将图像保存到磁盘并将图像的名称放入 NSUserDefaults,然后在需要时创建它:

[UIImage imageNamed:@"nameOfImage.png"]

【讨论】:

  • 好的。我正在像这样保存图像` UIImageWriteToSavedPhotosAlbum(self.savedPic, self, @selector(savedPic_:didFinishSavingWithError:contextInfo:), nil); ` 我如何获得保存的名称?
  • imageNamed 方法将在应用程序的主包中查找图像。在我看来,如果您希望用户拥有并使用它,并且如果您再次需要它,用户必须从相机胶卷中再次选择它,但如果您的应用程序需要使用它,您应该复制它在你的应用程序主包中(也许当你完成它的工作时,将它复制到相机胶卷中)。
【解决方案2】:

很简单,看我的代码:

- (UIImage *)backgroundImage {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData* myEncodedImageData = [defaults objectForKey:@"backgroundImageData"];
UIImage* image = [UIImage imageWithData:myEncodedImageData];
return image;
}

- (void)setBackgroundImage:(UIImage *)image {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData* imageData = UIImagePNGRepresentation(image);
[defaults setObject:imageData forKey:@"backgroundImageData"];
[defaults synchronize];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多