使用 NSUserDefaults 存儲自定義對象_第1頁
使用 NSUserDefaults 存儲自定義對象_第2頁
使用 NSUserDefaults 存儲自定義對象_第3頁
使用 NSUserDefaults 存儲自定義對象_第4頁
使用 NSUserDefaults 存儲自定義對象_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論