Сохранение NSArray, который содержит NSDictionary, который содержит NSArray UIImages (и других) - PullRequest
0 голосов
/ 30 марта 2012

Я видел различные вопросы, относящиеся к сохранению NSArrays / NSDictionaries, но я немного озадачен тем, что делать, когда некоторые из подэлементов являются UIImages.

Чтобы дать небольшой контекст, приложениепо сути, приложение типа блога.Когда пользователь создает новую запись, его сообщение может содержать следующее:

  • До 3 изображений из своего фотоальбома
  • Текст
  • Местоположение

По сути, я пытаюсь реализовать функцию «Сохранить черновик» в приложении, если пользователь решает временно отменить запись в своем блоге.Когда пользователь отменяет запись в блоге, его спросят в UIActionSheet, хотят ли они сохранить свой черновик.Когда пользователь захочет опубликовать снова, он может начать с того места, где он остановился, с сохраненным черновиком.

На этом этапе мне нужно будет сохранить следующие объекты:

1) NSArray of selected photos
---> contains NSDictionaries (up to 3)
--------> UIImage (large sized version)
--------> UIImage (thumbnail sized version)

2) NSDictionary of NSValues (just some view x,y position data)

3) Text -- NSString data of the blog text they have written

4) Location text -- NString data of their current location

Учитываячто мне нужно сохранить вышеуказанные данные 1 ~ 4, чтобы сделать функцию «Сохранить черновик» функциональной, каков наилучший способ сделать это?Должен ли я сделать специальный класс для хранения всех этих данных?Кроме того, мне нужно сначала сделать UIImages в NSData, прежде чем я смогу сохранить их на диск?

Спасибо !!

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Да, структура типа класса / модели имеет больше смысла и проще в обращении. Что-то вроде -

Interface Blogdata 
     NSArray *selectedPhoto;
     NSDictionary *positionValues;
     NSString *blogText;
     NSString *locationText;

и тогда вы можете сделать еще одну модель для фото данных;

Interface Photodata
     NSDictionary *photo;
     UIImage *largeImage;
     UIImage *thumbImage;
1 голос
/ 30 марта 2012

Самый простой способ - сохранить изображения в папке документов приложений и сохранить NSArray с именами файлов и другими данными, которые могут быть представлены в виде текста в drafts.plist.

filenameStr = [NSString stringWithFormat:@"image1.png"];
fileManager = [NSFileManager defaultManager];
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
imagePath = [documentsDirectory stringByAppendingString:@"/"];
imagePath = [imagePath stringByAppendingString:filenameStr];
NSData    *imageData    = UIImagePNGRepresentation(myImage);
[imageData writeToFile:imagePath atomically:YES];
1 голос
/ 30 марта 2012

Все свойства, которые вы упомянули, кажутся принадлежащими классу Blog.Они уже сгруппированы вместе?Объект Blog может фиксировать состояние черновика с помощью переменных (свойств) объекта, которые являются четырьмя вещами, которые вы упомянули.Затем вы можете сохранить объект Blog как NSData и прочитать его, когда пользователь снова захочет набросать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...