iOS共通データ格納方式

1557 ワード

一般的な方法:


1、plist
2、NSUserDefault
3、NSKeydArchiverアーカイブ
4、FMDB

一、plist


plistファイルの読み取りと書き込み
特徴:OC共通データ型(NSString、NSDictionary、NSArray、NSData、NSNumberなど)のみを格納し、カスタムモデルオブジェクトを直接格納することはできません.カスタムモデルオブジェクトを格納したい場合は->カスタムモデルオブジェクトを辞書ストレージに変換するしかありません.
NSString *name = @" ";
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *strPath = [documentPath stringByAppendingPathComponent:@"str.plist"];
[name writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSLog(@">>>>>>>>>>>%@",strPath);
NSString *tmpStr = [NSString stringWithContentsOfFile:strPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@">>>>>tmpStr>>>>>>%@",tmpStr);

二、NSUserDefault


UserDefaultsがデータを設定するときは、すぐに書き込むのではなく、タイムスタンプのタイミングに合わせてキャッシュ内のデータをローカルディスクに書き込みます.したがってsetメソッドを呼び出すと、ディスクアプリケーションにデータが書き込まれずに終了する可能性があります.以上の問題が発生した場合、synchornizeメソッドを呼び出して強制的に書き込むことができます.
NSUserDefaults *userdefault = [NSUserDefaults standardUserDefaults];
//
[userdefault setBool:YES forKey:@"isLogined"];
[userdefault synchronize];
//
BOOL loginStatus = [userdefault boolForKey:@"isLogined"];
NSLog(@">>>>>loginStatus>>>>>>%@",(loginStatus==1)?@"YES":@"NO")