


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、、了解NSUserDefaults以及它可以直接存儲(chǔ)的類型NSUserDefaults是一個(gè)單例,在整個(gè)程序中只有一個(gè)實(shí)例對(duì)象,他可以用于 數(shù)據(jù)的永久保存,而且簡單實(shí)用,這是它可以讓數(shù)據(jù)自由傳遞的一個(gè)前提,也是 大家喜歡用它保存簡單數(shù)據(jù)的一個(gè)主要原因。使用NSUserDefaults存儲(chǔ)自定義對(duì)象的最初,我們必須認(rèn)識(shí)NSUserDefaults可以存儲(chǔ)哪一些類型的數(shù)據(jù).下面一一列出:NSUserDefaults 支持的數(shù)據(jù)類型有:NSNumber (NSInteger、float、double), NSString, NSDate, NS Array, NSDictionary, BOOL如果
2、想要將上述數(shù)據(jù)類型的數(shù)據(jù)永久保存到NSUserDefaults中去,只需要 簡單的操作(一個(gè)Value 個(gè)Key),例如,想要保存一個(gè)NSString的對(duì)象,代碼 實(shí)現(xiàn)為:將 NSString 對(duì)象存儲(chǔ)到 NSUserDefaults 中NSString *passWord = "1234567“;NSUserDefaults *user = NSUserDefaults standardUserDefaults;user setObject:passWord forKey:"userPassWord"將數(shù)據(jù)取出也很簡單,只需要取出key對(duì)應(yīng)的值就好了,代碼如下:
3、NSUserDefaults *user 二NSUserDefaults standardUserDefaults;NSString *passWord = user objectForKey:,userPassWordM;注意:對(duì)相同的Key賦值約等于一次覆蓋,要保證每一個(gè)Key的唯一性值得注意的是:NSUserDefaults存儲(chǔ)的對(duì)象全是不可變的(這一點(diǎn)非常關(guān)鍵,弄錯(cuò)的話程 序會(huì)出bug),例如,如果我想要存儲(chǔ)一個(gè)NSMutableArray對(duì)象我必須先創(chuàng) 建一個(gè)不可變數(shù)組(NSArray)再將它存入NSUserDefaults中去,代碼如下:NSMutableArray *mutabl
4、eArray = NSMutableArray arrayWithObjects:Hl 23T234: nil;NSArray * array = NSArray array With Array: mu table Array;NSUserDefaults *user = NSUserDefaults standardUserDefaults;user setObject:array forKey:"記住存放的一定是不可變的”;取出數(shù)據(jù)是一樣的,想要用NSUserDefaults中的數(shù)據(jù)給可變數(shù)組賦值先給出一個(gè)錯(cuò)誤的寫法:NSUserDefaults *user = NSUserD
5、efaults standardUserDefaults;這樣寫后,mutableArray就變成了不可變數(shù)組了,如果你要在數(shù)組中添 加或刪除數(shù)據(jù)就會(huì)出現(xiàn)bugNSMutableArray *mutableArray = user objectForKey:n記住存放的一定 是不可變的J;正確的寫法:/*正確的賦值方法*/NSUserDefaults *user = NSUserDefaults standardUserDefaults;可以用alloc方法代替NSMutableArray *mutableArray = NSMutableArray array With Array: use
6、 r objectForKeX記住存放的一定是不可變的,;二、使用NSUserDefaults存儲(chǔ)自定義對(duì)象1、將自定義類型轉(zhuǎn)換為NSData類型當(dāng)數(shù)據(jù)重復(fù)而且多的時(shí)候(例如想存儲(chǔ)全班同學(xué)的學(xué)號(hào),性別(這個(gè)數(shù) 據(jù)量可能太大了).如果不用SQLite存儲(chǔ)(多數(shù)據(jù)最好還是用這個(gè)),你 可以選擇使用歸檔,再將文件寫入本地,但是這種方式和NSUserDefaults比起來 麻煩多了 (因?yàn)镹SFileManage本來就挺復(fù)雜),但是問題是,NSUserDefaults本 身不支持自定義對(duì)象的存儲(chǔ),不過它支持NSData的類型,下面舉一個(gè)例子來介 紹。我們先建立一個(gè)叫Student的類,這個(gè)類里有三個(gè)屬
7、性(學(xué)號(hào),性別),如圖: / Created by lady-奕奕 on 14-7-24 ./ Copyri<yh.t (c) 2014 1 且dy奕奕 All eights reserved./I«import <Foundation/Foundation h>ginterzace Student : NSObjeerGproperry(monatomic ,rcrain) NSStrirg *rame;(property (nonatomic . retain) NSSrrirg *studentNurrt)er;(property (nonatomic , r
8、etain) NSSuxing *sex;Send我們要做的就是將Student類型變成NSData類型,那么就必須實(shí)現(xiàn)歸檔:這里要實(shí)現(xiàn) 在.h文件中申明NSCoding協(xié)議,再在.m中實(shí)現(xiàn) encodeWithCoder 方法和initWithCoder方法就可以了 :h中修改文件如圖/ Crea.ted. by lady-奕奕 on 14-7-24 ./ Copyright (c) 2014年 Indy-奕奕.All rights reserved. /import <Foundation/Fonndation h>(3Lnt.crrfaoo StudentSpropert:
9、y (non at omi c gproperty(nonatomic gproperty(nonatomic,retain),retain),rorain)NSObjzNSString *rame;NSString *studentNurrber;NSStrir:g *sex;Send.m中加入代碼:/ Cr-eated by 丄ady-奕奕 on 14-7-24 ./ Copyright (e) 201.4年 lady-奕奕 All rights reserved./# import n5tudert .h"6 iir.plemcntation Scudenr|-(voi<
10、i) encodeWithCocier: (NSCoder *') aCoder aCodex encoaeObjecc: self;. narr.e forKey: g nnama n ;aCodex encodeOb jeuti: self studentunber f orKey : 3 HstudcntKurri>cr,r ;aCoder encodeObect: self sex f orKey : $ n sex,f ;-(id)initWithCoder: (NSCoder *)aDecoder(if (self = (super init)(self nani
11、169; 二 (aDecodcr decodeObjectForKey: G Hnr.cH ;self.sti;dentNiirr.ber = aDecoder decodeObjcctForKey:srudenrNurber'1 ; self.sex = (aDecoder decodeObjectrorKey;3nSn;Iret-urn self;end這樣做就可以將自定義類型轉(zhuǎn)變?yōu)镹SData類型了2、將自定義類型數(shù)據(jù)存入NSUseiDefaults中如果要存儲(chǔ)全班同學(xué)的信息,我們可以建一個(gè)NSMutableArray來存放全班 同學(xué)的信息(里面存儲(chǔ)的全是NSData對(duì)象)在需要
12、存儲(chǔ)的地方加入代碼:首先,要建立一個(gè)可變數(shù)組來存儲(chǔ)NSDate對(duì)象Stu de nt *stude nt = Student alloc ini;下面進(jìn)行的是對(duì)student對(duì)象的name , studentNumber f sex的賦值stude = Jady-奕奕:student.studentNumber = ,3100104006u;student.sex ='女:這是一個(gè)存放全班同學(xué)的數(shù)組NSMutableArray * dataArray = NSMutableArray array With Cap acity: 50;將student類型變?yōu)镹SData
13、類型NSData *data = NSKeyedArchiver archivedDataWithRo otObject:student;存放數(shù)據(jù)的數(shù)組將data加入進(jìn)去dataArray addObject:data;如果你只想存一個(gè)人的信息,你可以直接將NSData存入NSUserDefmults中NSData *data = NSKeyedArchiver archivedDataWithRootObject:studen t;NSUserDefaults *user = NSUserDefaults standardUserDefaults;user setObject:data forKey:HoneStudent”;如果你想存儲(chǔ)全班同學(xué)的信息,你還要用一個(gè)for循環(huán)將data放入dataArray 中,這里具體的操作就不實(shí)現(xiàn)了,只給出存放的代碼:記住要轉(zhuǎn)換成不可變數(shù)組類型NS Array * array = NSArray array With Array: dataArray;NSUserDefaults *user = NSUserDefaults standardUserDefaults;user setObject:array forKey:HallStudent”;從NSUserDefaults中取出數(shù)據(jù)在還原也很簡單 例如還原一個(gè)學(xué)生的數(shù)據(jù):NS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車名義股東合伙人股權(quán)融資協(xié)議
- 跨國公司海外職員背景調(diào)查與聘用合同
- 藝人音樂專輯發(fā)行經(jīng)紀(jì)合同
- 登記離婚共同財(cái)產(chǎn)分割及債務(wù)承擔(dān)補(bǔ)充協(xié)議
- 大學(xué)生社會(huì)實(shí)踐研學(xué)旅行項(xiàng)目合作協(xié)議
- 智能停車設(shè)備生產(chǎn)與區(qū)域市場拓展合作加盟協(xié)議
- 建筑工程項(xiàng)目油漆工派遣服務(wù)及施工變更通知協(xié)議
- 醫(yī)學(xué)影像護(hù)士進(jìn)修匯報(bào)
- 酒店客房衛(wèi)生間清潔流程
- 田徑規(guī)則培訓(xùn)綱要
- 發(fā)貨管理規(guī)范
- DL-T5554-2019電力系統(tǒng)無功補(bǔ)償及調(diào)壓設(shè)計(jì)技術(shù)導(dǎo)則
- 女生穿搭技巧智慧樹知到期末考試答案章節(jié)答案2024年南昌大學(xué)
- 大熊貓的介紹
- 正常肝臟CT解剖
- 英語國家商務(wù)國情 知到智慧樹網(wǎng)課答案
- 2024年廣西來賓高投發(fā)展集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 衛(wèi)生部婦產(chǎn)科診療規(guī)范及指南
- 正畸病例匯報(bào)模板
- 科學(xué)小實(shí)驗(yàn)手搖發(fā)電機(jī)原理
- 中華民族共同體概論課件專家版10第十講 中外會(huì)通與中華民族鞏固壯大(明朝時(shí)期)
評(píng)論
0/150
提交評(píng)論