在NSUserDefault中保存图像并进入其他ViewController

时间:2013-03-19 07:03:59

标签: iphone ios objective-c xcode

我在第一个viewcontroller中保存nsuserdefaulf中的图像,我从imagepicker获取图像

[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image)            forKey:@"image"];

我将在下一个viewController中获取此图像

 NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"];
 UIImage* image = [UIImage imageWithData:imageData];

但是当我传递此图像以供使用时,它会给我错误,但是当我使用这样的图像时它会起作用。 (bg.png保存在项目中)

UIImage *image = [UIImage imageNamed:@"bg.png"];

我的代码有什么问题。 ?

5 个答案:

答案 0 :(得分:2)

Zohaib,您的代码中存在转换问题 首先在“NSDATA”中转换图像,然后添加到“NSUserDefaults”

  

NSData * data = [NSData dataWithData:UIImageJPEGRepresentation(image);

然后你可以收回数据。

答案 1 :(得分:1)

当您从选择器中选择图像时,将调用此方法

所以,请{。1}}在.h文件中声明这个

UIImage *imgGotFromPicker;

按下时将此图像发送到其他viewController。

在第二个视图控制器中:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {

    imgGotFromPicker = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}

答案 2 :(得分:1)

要保存图像并将其放入任何其他视图,您可以使用此方法:

保存:

[[NSUserDefaults standardUserDefaults] setObject:UIImagePNGRepresentation(image);

检索者:

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

答案 3 :(得分:0)

如果您的应用中有此图片,可能是您应该保存图片名称? 商店:

[[NSUserDefaults standardUserDefaults] setObject:@"bg.png"forKey:@"image"];

之后在其他视图中使用此代码

UIImage *image = [UIImage imageNamed:[myUserDefaults valueForKey: @"image"]];

答案 4 :(得分:0)

您正在将NSData直接保存到NSUserDefaults中。这不是正确的过程。您需要使用NSKeyedArchiver和NSKeyedUnarchiver来保存和检索NSUserDefaults中的数据。所以请试试这个:

NSKeyedArchiver and NSKeyedUnarchiver

此链接将帮助您保存和检索数据。您还需要实现这两种方法:

-(void)encodeWithCoder:(NSCoder *)encoder
{

}

-(id)initWithCoder:(NSCoder *)decoder
 {

  return self;
}