2012-05-04 2 views
0

У меня есть одно изображение, которое пользователь выбирает из рулона камеры. Идентификатор, как пользователь, должен иметь средство для сохранения и загрузки изображения из представления изображения пользовательского интерфейса. У меня есть изображение, сохраненное в одноэлементном классе, в настоящий момент это нормально, пока приложение не перестанет работать или устройство не перезагрузится.Могу ли я использовать NSString для сохранения/загрузки изображения?

Могу ли я использовать что-то похожее на код, который я использовал для хранения текстовой строки, для изображений? Я пытался просто изменить .text не .image но удивительно нет такой удачи (это было немного досягаемости)

- (IBAction)functionsave:(id)sender { 
NSString *savecontents = _function.text; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:savecontents forKey:@"savecontents1"]; 
[defaults synchronize]; 


- (IBAction)Functionload:(id)sender { 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *loadstring = [defaults objectForKey:@"savecontents1"]; 
[_function setText:loadstring]; 

ответ

1

объектов NSString подходят для хранения строк, а не изображений. Если вы хотите сохранить изображения для последующего использования, я рекомендую вам сохранить эти изображения как PNG в песочнице вашего приложения (т.е. папки документов):

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

Вы можете сохранять изображения с помощью:

UIImage *myImage = ... 
NSData *data = UIImagePNGRepresentation(myImage); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *appDocsDirectory = [paths objectAtIndex:0]; 
[data writeToFile:[NSString stringWithFormat:@"%@/%@.png", appDocsDirectory , @"myNewFile"] atomically:YES]; 

You может затем получить изображения в UIImage с:

UIImage* thumImage = [UIImage imageWithContentsOfFile:[[NSString stringWithFormat:@"%@/%@.png", appDocsDirectory , @"myNewFile"]]; 

Я думаю, что использование реальных файлов лучше для потребления памяти, чем NSUserDefaults. Так как вы можете загружать/выгружать из памяти один файл за раз.

+0

Благодарим вас за руководство, это звучит хорошо, извините, если это очень простой вопрос ... Коды сохранения и извлечения предположительно предназначены для моих кнопок сохранения и загрузки под IBAction? верхняя часть кода - это то, что в .h файла. В классе я хочу сохранить и загрузить изображение? Я продолжаю получать ошибки, когда я помещаю это, «ожидаемый», «в конце списка объявлений». Спасибо – JSA986

+0

или это файл AppDelegate в каталоге документа приложения. Я помещаю это, возможно? Как вы, наверное, догадались, что я не очень опытен в программировании. – JSA986

+0

Верхняя часть кода - это код реализации, необходимый для заполнения объекта documentDirectory с помощью пути к каталогу документов приложений. Вторая часть кода должна быть нажата на кнопку сохранения под IBAction (не забудьте заменить UIImage на «...»). Третий пример для загрузки. Важное примечание: Этот код является всего лишь примером, не забудьте закрыть случаи, когда изображение не найдено/нет, и NSErrors, если writeToFile не удается, и т. Д. – Neo

Смежные вопросы