iPhone:如何使用NSUserDefaults存储UIImage?

我不能保存图像使用nsuserdefaults和崩溃我的应用程序,我也使用自定义类UserInfo使用

-(void)encodeWithCoder:(NSCoder *)encoder { NSData *imageData = UIImagePNGRepresentation(categoryImage); [encoder encodeObject:categoryName forKey:@"name"]; [encoder encodeObject:imageData forKey:@"image"]; } 

– (id)initWithCoder:(NSCoder *)解码器和userInfo.categoryImage是UIImagevariables。

原因:' – [UIImage encodeWithCoder:]:无法识别的select器发送到实例0x7676a70'

 userInfo = [[UserInfo alloc] init]; userInfo.categoryName = categoryName.text; NSLog(@"Category Name:--->%@",userInfo.categoryName); userInfo.categoryImage = image; appDelegate.categoryData = [[NSMutableDictionary dictionaryWithObjectsAndKeys: userInfo.categoryName, @"name",userInfo.categoryImage,@"image", nil] mutableCopy]; [appDelegate.categories addObject:appDelegate.categoryData]; NSLog(@"Category Data:--->%@",appDelegate.categories); [appDelegate.categories addObject:userInfo.categoryName]; [appDelegate.categories addObject:userInfo.categoryImage]; [self saveCustomObject:userInfo.categoryName]; [self saveCustomObject:userInfo.categoryImage]; -(void)saveCustomObject:(UserInfo *)obj { appDelegate.userDefaults = [NSUserDefaults standardUserDefaults]; NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:obj]; [appDelegate.userDefaults setObject:myEncodedObject forKey:@"myEncodedObjectKey"]; } 

所以请帮助我如何使用nsusedefaults存储和检索uiimage?

UIImage没有实现NSCoding协议,这就是为什么你有错误。

商店:

 NSData* imageData = UIImagePNGRepresentation(image); NSData* myEncodedImageData = [NSKeyedArchiver archivedDataWithRootObject:imageData]; [appDelegate.userDefaults setObject:myEncodedImageData forKey:@"myEncodedImageDataKey"]; } 

恢复:

 NSData* myEncodedImageData = [appDelegate.userDefaults objectForKey:@"myEncodedImageDataKey"]; UIImage* image = [UIImage imageWithData:myEncodedImageData]; 

如果我是你,我将把UIImage保存到一个文件中(使用[myImage hash];生成一个文件名),并使用NSUserDefault ;-)将文件名保存为NSString

在NSUserDefaults上保存图像:

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

在NSUserDefaults上检索图像:

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