0

在我的 iOS 应用程序中保存笔画时遇到了一些麻烦。我已经使用 NSUserDefaults 在我的应用程序中成功保存了文本,但我不确定保存图像是否以同样的方式工作,无论如何,这就是我所拥有的:

-(IBAction)saveImage:(id)sender
{
    UIImage *saveImage = drawImage.image;
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:saveImage forKey:@"image"];
    [defaults synchronize];
}

每当我在我的应用程序 (saveImage) 中点击保存按钮时,Xcode 的输出都会显示 - [NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<UIImage: 0x1f076ee0>' of class 'UIImage'

我不确定这意味着什么。任何帮助将不胜感激,因为我是 Xcode 和 Objective-C 的新手。谢谢你的帮助,-卡尔。

4

2 回答 2

2

您正在尝试将 aUIImage作为值保存在NSUserDefaults. 您需要做的是将其转换UIImageNSData并保存。

-(IBAction)saveImage:(id)sender
{
    UIImage *saveImage = drawImage.image;

    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(saveImage)];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:imageData forKey:@"image"];
    [defaults synchronize];
}
于 2012-06-24T17:26:46.253 回答
0

NSUserDefault无法UIImage直接保存,但您可以将它们保存为NSData. 为此,先转换图像,然后保存

  NSData *imageData = UIImagePNGRepresentation(drawImage.image);
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  [defaults setObject:imageData forKey:@"imageData"];
  [defaults synchronize];

要将 NSData 转换回 UIImage,请使用 imageWithData:例如

 UIImage *myImage = [UIImage imageWithData:imageData];
于 2012-06-24T17:30:09.437 回答