我在第一个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"];
我的代码有什么问题。 ?
答案 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;
}