2012-06-10 2 views
2

Итак, я пытаюсь сохранить изображение, взятое из UIImagePickerController, в NSUserDefaults, поэтому я могу открыть его в альбоме, который я сгенерировал, но когда я вызываю метод делегата для сохранения изображения, я получаю ошибку :Сохранение UIImage в NSUserDefaults

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<UIImage: 0x1d0bf0>' of class 'UIImage'. Note that dictionaries and arrays in property lists must also contain only property values.` 

код выглядит следующим образом:

self.savedPic = [[UIImage alloc] init]; 
self.savedPic = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
[[NSUserDefaults standardUserDefaults] setValue:self.savedPic forKey:[NSString stringWithFormat:@"image_%i",imageCount]]; 
+1

http://stackoverflow.com/questions/6648518/save-images-in-nsuserdefaults –

ответ

1

Вы должны сохранить на диске изображение и поместите имя вашего изображения в NSUserDefaults, а затем при необходимости его создания:

[UIImage imageNamed:@"nameOfImage.png"] 
+0

Ok. Я сохраняю изображение так: 'UIImageWriteToSavedPhotosAlbum (self.savedPic, self, @selector (savedPic_: didFinishSavingWithError: contextInfo :), nil); 'как мне получить имя, которое оно сохраняется? – Chris

+0

Метод imageNamed будет искать изображение в главном комплекте приложения. На мой взгляд, использование рулона камеры хорошо, если вы хотите, чтобы пользователь имел его и использовал, и если вам это нужно снова, пользователь должен выбрать его снова из рулона камеры, но если ваше приложение должно работать с ним, вы должны скопировать это в вашем основном приложении (и, возможно, когда вы закончите работать над ним, скопируйте его в рулон камеры). – moxy

2

Это очень просто, смотрите мои коды:

- (UIImage *)backgroundImage { 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSData* myEncodedImageData = [defaults objectForKey:@"backgroundImageData"]; 
UIImage* image = [UIImage imageWithData:myEncodedImageData]; 
return image; 
} 

- (void)setBackgroundImage:(UIImage *)image { 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSData* imageData = UIImagePNGRepresentation(image); 
[defaults setObject:imageData forKey:@"backgroundImageData"]; 
[defaults synchronize]; 
}