0

我在这里看到了有关保存 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 才能将它们保存到磁盘?

谢谢!!

4

3 回答 3

1

您提到的所有属性似乎都属于一个Blog类。他们已经组合在一起了吗?一个Blog对象可以捕获草稿的状态,其中对象的变量(属性)是您提到的四件事。然后,您可以将Blog对象保存为 NSData 并在用户再次需要草稿时读取它。

这样做的好处是您只需要担心保存一个对象,而不必考虑每次保存四个(并检索它们)。

于 2012-03-30T07:00:33.437 回答
1

是的,类/模型之类的结构更有意义,也更容易处理。就像是-

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

然后您可以为照片数据再制作一个模型;

Interface Photodata
     NSDictionary *photo;
     UIImage *largeImage;
     UIImage *thumbImage;
于 2012-03-30T07:05:52.417 回答
1

最简单的方法是将图像保存到应用程序文档文件夹并保存文件名的 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];
于 2012-03-30T09:40:00.643 回答