iOS開発-ファイル格納方法の概要
1856 ワード
-方法1:NSUserDefaults
用途
一般に,ユーザ名,ゲーム最高得点など,軽量レベルのユーザ嗜好をここに格納する.
ストレージパス
ストレージパスはdataContainerの下にあるLibrary/Perferance
ファイル形式
.plist
使用方法
[[NSUserDefaults standardUserDefaults] setBool:isRemember forKey:@"remember"]; //
_rememberSwitch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"remember"]; //
保存できるコンテンツの形式は次のとおりです.
NSString NSData NSDate NSArray NSDictionary NSNumber(bool,integer,float,doubleをNSNumberにカプセル化できる)
-メソッド2:配列、辞書を指定するパスに格納し、次のように格納.plistファイル
用途
カスタム配列、辞書を.plistファイル
ストレージパス
指定した任意のパス
ファイル形式
.plist
使用方法
//
NSArray *array = @[@"amao", @"agou"];
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"array.plist"];
[array writeToFile:path atomically:YES];
//
NSArray *array = [NSArray arrayWithContentsOfFile:path atomically:YES];
-メソッド3:オブジェクトのアーカイブ
用途
カスタムModelクラスを特定のデータストリームに変換し、ローカルに保存します(カスタムオブジェクトおよびオブジェクトのすべてのプロパティはNSCodingに従う必要があります).
ストレージパス
指定した任意のパス
ファイル形式
私はいつもarchiveを接尾辞として
使用方法
オブジェクトクラスをカスタマイズするには、次の2つの方法が必要です.
- encodeWithCoder: //
- initWithCoder: //
保存方法:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject: model ];
[data writeToFile:filePath atomically:YES];
取得方法:
id object = [NSKeyedUnarchiver unarchiverObjectWithFile:filePath];
if ([object isKindOfClass:[NSArray class]]) {
[model addObjectsFromArray:object];
}
上記の3つの方法の欠点は、どんなに小さな変更でも、完全に保存されていることです.