保存在iOS绘画应用中

时间:2012-06-24 17:24:26

标签: ios xcode save nsuserdefaults paint

我在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的新手。谢谢你的帮助, -Karl。

2 个答案:

答案 0 :(得分:2)

您正试图将UIImage保存为NSUserDefaults中的值。您需要做的是将UIImage转换为NSData并保存。

-(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];
}

答案 1 :(得分: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];