iOS 數(shù)據(jù)持久化之使用NSUserDefaults存儲數(shù)據(jù)
來源:程序員人生 發(fā)布時間:2014-10-03 08:00:00 閱讀次數(shù):1943次
1.用處:NSUserDefaults用來存儲類似用戶的配置、程序設(shè)置信息等這些的數(shù)據(jù)
iOS下可以使用NSUserDefault、NSKeyedArchiver、sqlite、CoreData幾種常用的方式來存儲數(shù)據(jù),其中NSUserDefaults用來存儲類似用戶的配置等這些的數(shù)據(jù),后兩者用戶存儲大批量和比較復(fù)雜的數(shù)據(jù)。
NSUserDefault
基本上支持所有的原生數(shù)據(jù)類型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等等。如果要存放自定義的對象(如自定義的類對象),則必須將其轉(zhuǎn)換成NSData存儲。
2.用法:
NSUserDefault的使用比較簡單:
A類頁面:
NSUserDefaults *userDefault = [NSUserDefaults
standardUserDefaults];
[userDefault setObject:@“北京”
forKey:LASTCITY];
[userDefault synchronize];
B類頁面:
NSUserDefaults *userDefault = [NSUserDefaults
standardUserDefaults];
NSString *lastCity = [userDefault
objectForKey:LASTCITY];
3.細節(jié)用法:
如果要存放自定義的對象(如自定義的類對象),則必須將其轉(zhuǎn)換成NSData存儲:
-
NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]
-
[mySettingData setObject:arr forKey:@"arrItem"];
-
[mySettingData setObject:@"admin" forKey:@"user_name"];
-
[mySettingData setBOOL:@YES forKey:@"auto_login"];
-
[mySettingData setInteger:1 forKey:@"count"];
往NSUserDefaults添加數(shù)據(jù)后,它們就變成了全局的變量,App中即可讀寫NSUserDefault中的數(shù)據(jù):
-
NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];
-
NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);
-
NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);
-
NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);
如果想刪除某個數(shù)據(jù)項,可以使用removeObjectForKey刪除數(shù)據(jù):
-
[mySettingData removeObjectForKey:@"arrItem"];
需要注意的是,NSUserDefaults是定時把緩存中的數(shù)據(jù)寫入磁盤的,而不是即時寫入,為了防止在寫完NSUserDefaults后程序退出導(dǎo)致的數(shù)據(jù)丟失,可以在寫入數(shù)據(jù)后使用synchronize強制立即將數(shù)據(jù)寫入磁盤:
-
[mySettingData synchronize];
運行上面的語句后,NSUserDefaults中的數(shù)據(jù)即被寫入到.plist文件中,如果是在模擬器上運行程序,可以在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目錄下面找到一個文件名為YOUR-Bundle_Identifier.plist的plist文件,用Xcode打開該文件,可以看到剛才寫入的數(shù)據(jù)。
4、針對同一個關(guān)鍵字對應(yīng)的對象或者數(shù)據(jù),可以對它進行重寫,重寫之后關(guān)鍵字就對應(yīng)新的對象或者數(shù)據(jù),舊的對象或者數(shù)據(jù)會被自動清理。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈