0

皆さん、こんばんは。Objective-C に関する質問がありましたので、お役に立てれば幸いです。

私のアプリには、16 個のオブジェクトを含む可変配列があります。オブジェクトは画像です。

ユーザーがプログラムを終了したときに画像が保持されるように、配列を保存してロードしたいと思います。

私はデータの永続性に不慣れで、データを保存およびロードする方法がいくつかあることがわかり、データを保存およびロードする NSUserDefaults メソッドに精通しています。ただし、この方法で画像を含む配列を保存できないことは承知しています。

おそらく、画像を含む配列を保存およびロードするための最良かつ最も簡単な方法の例を挙げて、誰かが説明してもらえますか? これを行う最善の方法がわからないので、どんな助けも素晴らしいでしょう。

よろしくお願いします!

4

1 に答える 1

2

の使用を検討してくださいNSKeyedArchiver

// Archive
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:theArray];
NSString *path = @"/Users/Anne/Desktop/archive.dat";
[data writeToFile:path options:NSDataWritingAtomic error:nil];

// Unarchive
NSString *path = @"/Users/Anne/Desktop/archive.dat";
NSMutableArray *theArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

このようにして、アーカイブされていない配列が元の配列と同一であることを確認できます。
NSCoding プロトコルに準拠するすべてのクラスを で使用できますNSKeyedArchiver

注: 任意の拡張子を使用できます。

コメントへの返信:

以下は iOS で動作するはずです。

// The Array
NSMutableArray * array = [[NSMutableArray alloc] init]; 

// Determine Path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [ [paths objectAtIndex:0] stringByAppendingPathComponent:@"archive.dat"];

// Archive Array
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
[data writeToFile:path options:NSDataWritingAtomic error:nil];

// Unarchive Array
NSMutableArray *theArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
于 2012-06-22T22:37:58.867 に答える