2012-06-24 2 views
0

У меня возникли проблемы с сохранением штрихов краски в приложении iOS. Я успешно сохранен текст в моем приложении с помощью NSUserDefaults, но я не уверен, если сохранение изображений работает точно так же, в любом случае, вот что у меня есть:Сохранение в приложении для iOS-краски

-(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.

+1

Я не думаю, что вы действительно хотите сохранить изображение в настройках по умолчанию. Возможно, вы хотите сохранить это в папке с документами. – pt2ph8

ответ

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]; 
} 
+0

Фантастический! Спасибо! – 2456789

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]; 
Смежные вопросы