******? 數(shù)據(jù)持久化常用的五種方式? ******
1.plist文件(屬性列表)
2.preference(偏好設(shè)置)
3.NSKeyedArchiver(歸檔)
4.SQLite 3
5.CoreData
偏好設(shè)置是專門用來保存應(yīng)用程序的配置信息的,一般不要在偏好設(shè)置中保存其他數(shù)據(jù)。
如果沒有調(diào)用synchronize方法,系統(tǒng)會根據(jù)I/O情況不定時刻地保存到文件中。所以如果需要立即寫入文件的就必須調(diào)用synchronize方法。
偏好設(shè)置會將所有數(shù)據(jù)保存到同一個文件中。即preference目錄下的一個以此應(yīng)用包名來命名的plist文件。
NSUserDefaults適合存儲輕量級的本地數(shù)據(jù),如登陸界面的數(shù)據(jù),用戶名、密碼等用戶偏好設(shè)置類的數(shù)據(jù)。下次啟動應(yīng)用的時候就可以直接從NSUserDefaults里面讀取上次運行的數(shù)據(jù)。
如果使用自己建立的plist文件什么的,需要自己顯式創(chuàng)建文件,讀取文件,很麻煩,而如果用NSUserDefaults則不用管這些,就像讀字典一樣,直接讀取數(shù)據(jù)就可以了,同時NSUserDefaults有緩存機制,可以避免頻繁讀寫文件。
NSUserDefaults支持的數(shù)據(jù)格式有:NSNumber(BOOL、Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,NSData類型。
NSUserDefaults不能存儲可變(mutable)類型,只能存儲不可變類型
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//添加preference
[defaults setObject:@"value1" forKey:@"key1"];
[defaults setObject:@1111 forKey:@"key2"];
[defaults synchronize];
//刪除preference
[defaults removeObjectForKey:@"key1"];
[defaults synchronize];
//修改preference
[defaults setObject:@"value2" forKey:@"key1"];
[defaults synchronize];
//刪除所有preference
NSString *appDomainStr = [[NSBundle mainBundle] bundleIdentifier];
[defaults removePersistentDomainForName:appDomainStr];
NSString *key1Value = [defaults objectForKey:@"key1"];
NSNumber *key2Value = [defaults objectForKey:@"key2"];
NSLog(@"偏好設(shè)置=%@=%@",key1Value,key2Value);