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つの方法の欠点は、どんなに小さな変更でも、完全に保存されていることです.

方法四:SQLite


方法5:Core Data