iOS中數(shù)據(jù)持久化的幾種方式:
1.屬性列表
2.對象歸檔
3.數(shù)據(jù)庫存儲(SQLite3)
4.蘋果公司提供的持久性工具Core Data癣蟋。
屬性文件
屬性列表文件是一種XML文件,F(xiàn)oundation框架中的數(shù)組和字典等都可以于屬性列表文件相互轉(zhuǎn)換。
NSArray類常用讀寫屬性列表文件的方法:
+arrayWithContentsOfFile:
-initWithContentsOfFile:
-writeToFile:atomically:
NSDictionary類常用讀寫屬性列表文件的方法:
+dictionaryWithContentsOfFile孵户;
-initWithContentsOfFile橄杨;
-writeToFile:atomically:
當(dāng)然也可以通過代碼直接創(chuàng)建plist文件朴上。
對象歸檔
對象歸檔是將對象歸檔以文件的形式保存到磁盤中(也稱為序列化,持久化)褐捻,使用的時候讀取該文件的保存路徑讀取文件的內(nèi)容(也稱為接檔,反序列化)椅邓。
簡單對象歸檔
使用兩個類:
1.NSKeyedArichiver
2.NSKeyedUnarchiver
例子:使用兩個類:
NSKeyedArichiver柠逞、NSKeyedUnarchiver
NSString *homeDirectory = NSHomeDirectory(); //獲取根目錄
NSString homePath = [homeDirectory stringByAppendingPathComponent:@"自定義文件名,如test.archiver"];
NSArray *array = @[@"abc", @"123", @12];
Bool flag = [NSKeyedArichiver archiveRootObject:array toFile:homePath];
if(flag) {
NSLog(@"歸檔成功景馁!");
}
自定義內(nèi)容歸檔
歸檔:
使用NSData實例作為歸檔的存儲數(shù)據(jù)
添加歸檔的內(nèi)容---使用鍵值對
完成歸檔
解歸檔:
從磁盤讀取文件板壮,生成NSData實例
根據(jù)NSData實例和初始化解歸檔實例
解歸檔,根據(jù)key訪問value
SQLIte3
上述方法都有一個致命的缺點(diǎn)合住,那就是都無法存儲大批量的數(shù)據(jù)绰精,有性能的問題撒璧。
舉例:使用歸檔。
(1)數(shù)據(jù)的存取都必須是完整的笨使,要求寫入的時候要一次性寫入卿樱,讀取的時候要一次性全部讀取,這涉及到應(yīng)用的性能問題阱表。
(2)如果有1000條數(shù)據(jù)殿如,此時要把第1001條數(shù)據(jù)存入,那么需要把所有的數(shù)據(jù)取出來最爬,把這條數(shù)據(jù)加上去之后涉馁,再存入。
創(chuàng)建步驟
1爱致、創(chuàng)建一個簡單的View based application
2烤送、選擇項目文件,然后選擇目標(biāo)糠悯,添加libsqlite3.dylib庫到選擇框架
3帮坚、通過選擇" File-> New -> File... -> "選擇 Objective C class 創(chuàng)建新文件,單擊下一步
4互艾、"sub class of"為NSObject"试和,類命名為DBManager
5、選擇創(chuàng)建
6纫普、更新DBManager,
CoreData
Core Data是蘋果官方推薦使用的數(shù)據(jù)持久化方式阅悍,在使用的過程中,不需要導(dǎo)入數(shù)據(jù)庫框架昨稼,也不需要使用sql語句操作數(shù)據(jù)庫节视,完全是按照面向?qū)ο蟮乃枷耄褂脤嶓w模型來操作數(shù)據(jù)庫假栓。在使用的過程中需要注意的是寻行,如果模型發(fā)生了變化,可以選擇重新生成實體類文件匾荆,但是自動生成的數(shù)據(jù)庫并不會自動更新拌蜘,需要考慮重新生成數(shù)據(jù)庫,并把之前數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行移植棋凳。Core Data能夠簡化操作拦坠,但是它不支持跨平臺使用,如果想實現(xiàn)跨平臺剩岳,就需要使用SQLite來進(jìn)行數(shù)據(jù)持久化贞滨。