




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、了解NSUserDefaults以及它可以直接存儲的類型 NSUserDefaults是一個單例,在整個程序中只有一個實(shí)例對象,他可以用于數(shù)據(jù)的永久保存,而且簡潔有用,這是它可以讓數(shù)據(jù)自由傳遞的一個前提,也是大家寵愛用它保存簡潔數(shù)據(jù)的一個主要緣由。 使用 NSUserDefaults 存儲自定義對象的最初,我們必需生疏NSUserDefaults可以存儲哪一些類型的數(shù)據(jù),下面一一列出:NSUserDefaults支持的數(shù)據(jù)類型有:NSNumber(NSInte
2、ger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL. 假如想要將上述數(shù)據(jù)類型的數(shù)據(jù)永久保存到NSUserDefaults中去,只需要簡潔的操作(一個Value 一個Key ),例如,想要保存一個NSString的對象,代碼實(shí)現(xiàn)為: /將NSString 對象存儲到 NSUserDefaults 中 NSString *p
3、assWord = "1234567" NSUserDefaults *user = NSUserDefaults standardUserDefaults; user setObject:passWord forKey:"userPassWord" 將數(shù)據(jù)取出也很簡潔,只需要取出key 對應(yīng)的值就好了,代碼如下:
4、; NSUserDefaults *user = NSUserDefaults standardUserDefaults; NSString *passWord = user objectForKey:"userPassWord" 留意:對相同的Key賦值約等于一次掩蓋,要保證每一個Key的唯一性 值得留意的是: NSUserDef
5、aults 存儲的對象全是不行變的(這一點(diǎn)格外關(guān)鍵,弄錯的話程序會出bug),例如,假如我想要存儲一個 NSMutableArray 對象,我必需先創(chuàng)建一個不行變數(shù)組(NSArray)再將它存入NSUserDefaults中去,代碼如下: NSMutableArray *mutableArray = NSMutableArray arrayWithObjects:"123","234", nil;
6、60;NSArray * array = NSArray arrayWithArray:mutableArray; NSUserDefaults *user = NSUserDefaults standardUserDefaults; user setObject:array forKey:"記住存放的肯定是不行變的"
7、; 取出數(shù)據(jù)是一樣的,想要用NSUserDefaults中的數(shù)據(jù)給可變數(shù)組賦值先給出一個錯誤的寫法: /*-錯誤的賦值方法-*/ NSUserDefaults *user = NSUserDefaults standardUserDefaults; /這樣寫后,mutableArray 就變成了不行變數(shù)組了,假如你要在數(shù)組中添加或刪除數(shù)據(jù)就
8、會消滅bug NSMutableArray *mutableArray = user objectForKey:"記住存放的肯定是不行變的" 正確的寫法: /*-正確的賦值方法-*/ NSUserDefaults *user = NSUserDefaults standardUserDefaults; &
9、#160; /可以用alloc 方法代替 NSMutableArray *mutableArray = NSMutableArray arrayWithArray:user objectForKey:"記住存放的肯定是不行變的" 二、使用 NSUserDefaults 存儲自定義對象1、將自定義類型轉(zhuǎn)換為NSData類型 當(dāng)數(shù)據(jù)重復(fù)而且多的時候(例如想
10、存儲全班同學(xué)的學(xué)號,姓名,性別(這個數(shù)據(jù)量可能太大了 ),假如不用SQLite 存儲 (多數(shù)據(jù)最好還是用這個),你可以選擇使用歸檔,再將文件寫入本地,但是這種方式和 NSUserDefaults 比起來麻煩多了(由于NSFileManage 原來就挺簡單) ,但是問題是,NSUserDefaults 本身不支持自定義對象的存儲,不過它支持NSData的類型,下面舉一個例子來介紹。 我們先建立一個叫Student 的類,這個類里有三個屬性(學(xué)號,姓名,性別),如圖:我們要做的就是將Student類型變成NSData類型 ,那么就必需實(shí)現(xiàn)歸檔:這里
11、要實(shí)現(xiàn) 在.h 文件中申明 NSCoding 協(xié)議,再 在 .m 中實(shí)現(xiàn) encodeWithCoder 方法 和 initWithCoder 方法就可以了 : .h 中修改文件如圖 : .m中加入代碼 :這樣做就可以將自定義類型轉(zhuǎn)變?yōu)镹SData類型了 2、將自定義類型數(shù)據(jù)存入 NSUserDefaults 中 假如要存儲全班同學(xué)的信息,我們可以建一個NSMutableArray 來存放全班同學(xué)的信息(里面存儲的全是NSData對象)在需要存儲的地方加入代
12、碼:/首先,要建立一個可變數(shù)組來存儲 NSDate對象 Student *student = Student alloc ini; /下面進(jìn)行的是對student對象的 name , studentNumber ,sex 的賦值 =
13、"lady-奕奕" student.studentNumber = "3100104006" student.sex = "女" /這是一個存放全班同學(xué)的數(shù)組 NSMutableArray * dataArray = NSMut
14、ableArray arrayWithCapacity:50; /將student類型變?yōu)镹SData類型 NSData *data = NSKeyedArchiver archivedDataWithRootObject:student; /存放數(shù)據(jù)的數(shù)組將data加入進(jìn)去 &
15、#160;dataArray addObject:data; 假如你只想存一個人的信息,你可以直接將NSData存入NSUserDefaults中 : NSData *data = NSKeyedArchiver archivedDataWithRootObject:student; NSUserDefaults *user =&
16、#160;NSUserDefaults standardUserDefaults; user setObject:data forKey:"oneStudent" 假如你想存儲全班同學(xué)的信息,你還要用一個for循環(huán)將data 放入 dataArray中,這里具體的操作就不實(shí)現(xiàn)了,只給出存放的代碼: /記住要轉(zhuǎn)換成不行變數(shù)組類型 NSArray * array =
17、0;NSArray arrayWithArray:dataArray; NSUserDefaults *user = NSUserDefaults standardUserDefaults; user setObject:array forKey:"allStudent" 從NSUserDefaults中取出數(shù)據(jù)在還原也很簡潔例如還原一個同學(xué)的數(shù)據(jù):NSUserDefaults *user = NSUserDefaults standardUserDefaults
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織業(yè)余活動方案
- 公司組合活動策劃方案
- 公司活動宣傳策劃方案
- 2025年心理學(xué)研究生入學(xué)考試試卷及答案
- 2025年全球化與國際關(guān)系研究生入學(xué)考試題及答案
- 2025年科學(xué)傳播專業(yè)研究生入學(xué)考試試題及答案
- 2025年礦業(yè)工程與安全管理考試題及答案
- 2025年翻譯與口譯專業(yè)資格考試試卷及答案
- 2024年度浙江省護(hù)師類之主管護(hù)師考前沖刺試卷B卷含答案
- 2024年度浙江省二級造價工程師之建設(shè)工程造價管理基礎(chǔ)知識模擬預(yù)測參考題庫及答案
- 有限空間監(jiān)理實(shí)施細(xì)則
- 新產(chǎn)品制造可行性及風(fēng)險分析報告
- 電磁兼容中抗擾度試驗(yàn)教學(xué)課件
- 采購預(yù)付款合同
- 2023年瀘州市文化和旅游系統(tǒng)事業(yè)單位招聘筆試模擬試題及答案
- 醫(yī)療器械行業(yè)市場部人員崗位職責(zé)
- (中醫(yī)內(nèi)科)高級、副高級職稱考試模擬試題及答案
- 跌倒墜床原因分析預(yù)防措施
- 弱電施工安全技術(shù)交底
- 安全生產(chǎn)知識應(yīng)知應(yīng)會
- 體育器材采購設(shè)備清單
評論
0/150
提交評論