ios最牛逼的保存數(shù)據(jù)的方式

1东囚、使用 writeToFile:atomically: 方法

(1)該方法是一次性向文件中寫入內(nèi)容,本次寫入會覆蓋文件中原來的內(nèi)容。

(2)方法解析:

???????? 使用要存儲的數(shù)據(jù)對象 調(diào)用該方法嘀倒,該方法有兩個參數(shù):

???????? para1:要寫入的路徑(目標(biāo)文件路徑)

???????? para2 :BOOL型。若為no局冰,則直接寫入目標(biāo)文件路徑测蘑;若為yes,則先寫到一個臨時的文件中康二,然后重命名后移至目標(biāo)路徑中碳胳,這樣若在寫入過程中出現(xiàn)了系統(tǒng)崩潰等問題,可以保證最終寫入目標(biāo)路徑文件的完整性(一般設(shè)為yes)沫勿。

(3)可以存儲的數(shù)據(jù)類型為:???????? 基本數(shù)據(jù)類型挨约、系統(tǒng)的引用(對象)類型,而自定義的對象類型不能使用該方法存儲产雹。例:NSArray *array = @[@"你好"];

??? [array writeToFile:destinationFilePath atomically:YES];

2诫惭、NSUserDefaults

(1)描述

???????? 這是一個單例類,直接操作沙盒中的Library中的Preferences中的一個名為本應(yīng)用的BundleID的plist文件蔓挖。

(2)相關(guān)操作

????? //首先獲取NSUserDefaults對象

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

1)寫數(shù)據(jù):

????? 可存儲的數(shù)據(jù)類型:字符串夕土、數(shù)組、字典瘟判、data怨绣、整型、浮點(diǎn)型拷获、BOOL型等

//字符串

[userDefaults setObject:@"111" forKey:@"1"];

//字典

NSDictionary *dic = @{@"222":@"2"};

[userDefaults setObject:dic forKey:@"2"];

//數(shù)組

NSArray *array = @[@"333",@"3333"];

[userDefaults setObject:array forKey:@"3"];

????? 注意:UserDefaults設(shè)置數(shù)據(jù)時,不是立即寫入,?是根據(jù)時間戳定時地把緩存中的數(shù)據(jù)寫入本地磁盤梨熙。所以調(diào)?了set方法之后數(shù)據(jù)有可能還沒有寫入磁盤應(yīng)用程序就終止了。出現(xiàn)以上問題,可以通過調(diào)用synchronize方法強(qiáng)制寫入刀诬,方法如下:

[userDefaults synchronize];

(2)取數(shù)據(jù):

//字符串

??? NSString *str = [userDefaults objectForKey:@"1"];

//字典??? NSDictionary *dic = [userDefaults objectForKey:@"2"];

//數(shù)組

NSArray *array = [userDefaults objectForKey:@"3"];

//布爾型??? BOOL isOk = [userDefaults boolForKey:@"4"];

(3)修改數(shù)據(jù)

//根據(jù)鍵值刪除對應(yīng)的對象??? [userDefaults removeObjectForKey:@"2"];

3咽扇、NSKeyedAchiever


????? (1)將自定義類對象存儲到本地的過程叫對象序列化 從本地讀出自定義類對象的過程叫對象反序列化 也有人將序列化稱為歸檔邪财。

????? (2)想要存儲自定義類對象,則該類要實(shí)現(xiàn)NSCoding協(xié)議以及該協(xié)議的兩個方法://編碼方法 aCoder編碼器 在編碼時 會將對象的屬性也進(jìn)行編碼- (void)encodeWithCoder:(NSCoder *)aCoder{?? ?[aCoder encodeObject:_name forKey:@"name"];

}

//解碼方法 aDecoder解碼器 在解碼時 會將對象的屬性頁進(jìn)行解碼- (id)initWithCoder:(NSCoder *)aDecoder{?? ?self.name = [aDecoder decodeObjectForKey:@"name"];}????? (3)同時质欲,若你想自定義 打印該對象的內(nèi)容树埠,則需要重寫它的description方法,只需在重寫的方法中自定義你想打印的內(nèi)容即可嘶伟,這里不再贅述怎憋。

????? (4)使用NSKeyedArchiver(序列化)/NSKeyedUnarchiver(反序列化)的步驟分別如下:

1)序列化步驟:

? A、創(chuàng)建可變數(shù)據(jù) 用于存儲序列化后的數(shù)據(jù) NSMutableData? *data? B九昧、根據(jù)data 創(chuàng)建序列化器? C绊袋、編碼? D、結(jié)束編碼? E铸鹰、將data寫入沙盒? F癌别、釋放通過 alloc 創(chuàng)建的對象?注:序列化時會調(diào)用對象實(shí)現(xiàn)的NSCoding協(xié)議中的encodeWithCoder方法 對每個對象進(jìn)行編碼。

具體實(shí)例:(自定義類:People)

??? NSArray *array = @[people1,people2,people3,people4,people5];??? NSMutableData *data1 = [[NSMutableData alloc] init];??? NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data1];??? [archiver encodeObject:array];??? [archiver finishEncoding];??? BOOL isOK = [data1 writeToFile:filePath atomically:YES];??? [archiver release];??? [data1 release]; ??????

2)反序列化步驟:??? A蹋笼、從本地取出你存儲的數(shù)據(jù)?? B展姐、若該數(shù)據(jù)不空,轉(zhuǎn)至3?? C剖毯、創(chuàng)建反序列化器?? D圾笨、解碼 并用 數(shù)組 接收(因?yàn)槟阒来鎯Φ氖菙?shù)組)?? E、結(jié)束解碼

具體實(shí)例:

??? NSData *data2 = [NSData dataWithContentsOfFile:filePath];??? if (data2)

??? {????????? NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data2];????????? NSArray *arr2 = [unarchiver decodeObject];?????? ?? [unarchiver finishDecoding];

??? }

想學(xué)習(xí)更多關(guān)于ios開發(fā)方面的知識請加qq:2296575155

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逊谋,一起剝皮案震驚了整個濱河市擂达,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胶滋,老刑警劉巖板鬓,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異镀钓,居然都是意外死亡穗熬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門丁溅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唤蔗,“玉大人,你說我怎么就攤上這事窟赏〖斯瘢” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵涯穷,是天一觀的道長棍掐。 經(jīng)常有香客問我,道長拷况,這世上最難降的妖魔是什么作煌? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任掘殴,我火速辦了婚禮,結(jié)果婚禮上粟誓,老公的妹妹穿的比我還像新娘奏寨。我一直安慰自己,他們只是感情好鹰服,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布病瞳。 她就那樣靜靜地躺著,像睡著了一般悲酷。 火紅的嫁衣襯著肌膚如雪套菜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天设易,我揣著相機(jī)與錄音逗柴,去河邊找鬼。 笑死亡嫌,一個胖子當(dāng)著我的面吹牛嚎于,可吹牛的內(nèi)容都是我干的掘而。 我是一名探鬼主播挟冠,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袍睡!你這毒婦竟也來了知染?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤斑胜,失蹤者是張志新(化名)和其女友劉穎控淡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體止潘,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掺炭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凭戴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涧狮。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖么夫,靈堂內(nèi)的尸體忽然破棺而出者冤,到底是詐尸還是另有隱情,我是刑警寧澤档痪,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布涉枫,位于F島的核電站,受9級特大地震影響腐螟,放射性物質(zhì)發(fā)生泄漏愿汰。R本人自食惡果不足惜困后,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衬廷。 院中可真熱鬧操灿,春花似錦、人聲如沸泵督。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽小腊。三九已至救鲤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秩冈,已是汗流浹背本缠。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留入问,地道東北人丹锹。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像芬失,于是被迫代替她去往敵國和親楣黍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容