1

我在我的第一个视图控制器中将图像保存在 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"];

我的代码有什么问题。?

4

5 回答 5

2

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

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

然后你可以取回数据。

于 2013-03-19T07:20:48.280 回答
1

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

所以,UIImage *imgGotFromPicker;在 .h 文件中声明这个

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

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

推送时将此图像发送到其他视图控制器。

在第二个视图控制器中:

@property(nonatomic, strong) UIImage *imgfromView;  in .h

@synthesize imgfromView = _imgfromView;  in .m
于 2013-03-19T07:17:25.253 回答
1

要保存图像并在任何其他视图中获取它,您可以使用以下方法:

保存方式:

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

检索方式:

NSData* imageData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
UIImage* image = [UIImage imageWithData:imageData];
于 2015-05-27T06:16:29.063 回答
0

如果您的应用中有此图像,您是否应该保存图像名称?店铺 :

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

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

UIImage *image = [UIImage imageNamed:[myUserDefaults valueForKey: @"image"]];
于 2013-03-19T07:11:37.347 回答
0

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

NSKeyedArchiver 和 NSKeyedUnarchiver

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

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

}

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

  return self;
}
于 2013-03-19T07:37:47.330 回答