NSUserDefaults的簡單介紹

2021-07-05 22:47:25 字數 1925 閱讀 6310

nsuserdefaults是乙個單例,在整個程式中只有乙個例項物件,他可以用於資料的永久儲存,而且簡單實用,這是它可以讓資料自由傳遞的乙個前提,也是大家喜歡用它儲存簡單資料的乙個主要原因。

使用 nsuserdefaults 儲存自定義物件的最初,我們必須認識nsuserdefaults可以儲存哪一些型別的資料,下面一一列出:

nsuserdefaults支援的資料型別有:nsnumber(nsinteger、float、double),nsstring,nsdate,nsarray,nsdictionary,bool.

如果想要將上述資料型別的資料永久儲存到nsuserdefaults中去,只需要簡單的操作(乙個value 乙個key ),例如,想要儲存乙個nsstring的物件,**實現為:
值得注意的是:

nsuserdefaults 儲存的物件全是不可變的(這一點非常關鍵,弄錯的話程式會出bug),例如,如果我想要儲存乙個 nsmutablearray 物件,我必須先建立乙個不可變陣列(nsarray)再將它存入nsuserdefaults中去,**如下:

nsmutablearray *mutablearray = [nsmutablearray arraywithobjects:@"123",@"234", nil];

nsarray * array = [nsarray arraywitharray:mutablearray];

nsuserdefaults *user = [nsuserdefaults standarduserdefaults];

[user setobject:array forkey:@"記住存放的一定是不可變的"];

取出資料是一樣的,想要用nsuserdefaults中的資料給可變陣列賦值

先給出乙個錯誤的寫法:

/————————-錯誤的賦值方法——————-/

nsuserdefaults *user = [nsuserdefaults standarduserdefaults];

//這樣寫後,mutablearray 就變成了不可變陣列了,如果你要在陣列中新增或刪除資料就會出現bug

nsmutablearray *mutablearray = [user objectforkey:@"記住存放的一定是不可變的"];

/————————-正確的賦值方法——————-/

nsuserdefaults *user = [nsuserdefaults standarduserdefaults];

//可以用alloc 方法代替

nsmutablearray *mutablearray = [nsmutablearray arraywitharray:[user objectforkey:@"記住存放的一定是不可變的"]];

當資料重複而且多的時候(例如想儲存全班同學的學號,姓名,性別(這個資料量可能太大了 )),如果不用sqlite 儲存 (多資料最好還是用這個),你可以選擇使用歸檔,再將檔案寫入本地,但是這種方式和 nsuserdefaults 比起來麻煩多了(因為nsfilemanage 本來就挺複雜) ,但是問題是,nsuserdefaults 本身不支援自定義物件的儲存,不過它支援nsdata的型別。

總之,nsuserdefaults 在我們編寫**中是最常用的乙個永久儲存資料的方法,也是最簡單的。

補充 nsuserdefaults資料儲存在乙個plist檔案裡

通過一些工具,可以很方便的開啟和修改它。所以我不建議用它來儲存一些關鍵資訊,因為這樣太容易被破解了

NSUserDefaults儲存的資料

今天用到nsuserdefault的時候,一直以為 nsuserdefaults standarduserdefaults setobject array forkey testinfo 就算儲存好了,再 nsuserdefaults standarduserdefaults arrayforkey...

NSUserDefaults的簡單使用

nsuserdefaults的簡單使用 nsuserdefaults可以訪問一些資訊,這個作用被廣泛用於登入時保持使用者的資訊 獲得nsuserdefaults 物件 整個程式有乙個nsuserdefaults單例 nsuserdefaults ud nsuserdefaults standardu...

NSUserDefaults儲存顏色

inte ce nsuserdefaults color void setcolor nscolor thecolor forkey nsstring key nscolor colorforkey nsstring key end implementation nsuserdefaults col...