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 をディスクに保存する前に、まず UIImages を NSData にする必要がありますか?

ありがとうございました!!

4

3 に答える 3

1

最も簡単な方法は、画像をアプリのドキュメントフォルダーに保存し、drafts.plistでテキストとして表すことができるファイル名やその他のデータのNSArrayを保存することです。

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 に答える
1

Blogあなたが言及したすべてのプロパティは、クラスに属しているようです。それらはすでにグループ化されていますか?Blogオブジェクトは、オブジェクトの変数 (プロパティ) を使用してドラフトの状態をキャプチャできます。これは、あなたが言及した 4 つのことです。次に、Blogオブジェクトを NSData として保存し、ユーザーがドラフトを再度必要とするときにそれを読み取ることができます。

これの利点は、毎回 4 つのオブジェクトを保存する (およびそれらを取得する) ことを考える必要がなく、1 つのオブジェクトを保存することだけを考えればよいことです。

于 2012-03-30T07:00:33.437 に答える
1

はい、クラス/モデルのような構造は、より意味があり、扱いも簡単です。何かのようなもの-

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

写真データのモデルをもう 1 つ作成できます。

Interface Photodata
     NSDictionary *photo;
     UIImage *largeImage;
     UIImage *thumbImage;
于 2012-03-30T07:05:52.417 に答える