NSUserDefaults 一些知識

2021-06-28 01:43:28 字數 2849 閱讀 7750

建立乙個user defaults方法有多個,最簡單得快速建立方法:

nsuserdefaults *accountdefaults = [nsuserdefaults standarduserdefaults];

新增資料到 user defaults:

[accountdefaults setobject:namefield.text forkey:userdefaultnamekey];

也可以新增基本資料型別int, float, bool等,有相應得方法

[accountdefaults setbool:yes forkey:userdefaultboolkey];

從user defaults中獲取資料:

[accountdefaults objectforkey:ncuserdefaultnamekey]

[accountdefaults boolforkey: userdefaultboolkey];

今天用到nsuserdefault的時候,一直以為[[nsuserdefaults standarduserdefaults] setobject:array forkey:@"testinfo"] ;就算儲存好了,再[[nsuserdefaults standarduserdefaults] arrayforkey:@"testinfo"]就算取出來,可是發現重啟動程式,關鍵字testinfo對應的竟然是空,仔細查下資料,發現自己太大意了,忘了寫到disk裡面了![[nsuserdefaults standarduserdefaults] synchronize]; 漲學問了又。。。呵呵!!!!

下面貼出**:

nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];

[defaults setobject:@"111" forkey:@"mytest"];

[defaults synchronize];

nsstring *teststr = [defaults objectforkey:@"mytest"];

nslog(@"teststr is: %@",teststr);

注意問題:

通過檢視官方文件。userdefaults不是立即寫入,而是根據時間戳定時的把快取中的資料寫入本地磁碟。所以呼叫了set方法之後資料有可能還沒有寫入磁碟應用程式就終止了。出現以上問題。可以通過呼叫synchornize方法強制寫入。

要點:1)nsuserdefaults非常好用,並不需要使用者在程式中設定nsuserdefaults的全域性變數,需要在**使用nsuserdefaults的資料,那麼就在**建立乙個nsuserdefaults物件,然後進行讀或者寫操作。

2)針對同乙個關鍵字對應的物件或者資料,可以對它進行重寫,重寫之後關鍵字就對應新的物件或者資料,舊的物件或者資料會被自動清理。

- (void)defaultcheck:(id)sender

else

}- (void)loadview

else

namefield.borderstyle = uitextborderstylebezel;

[pwdfield setborderstyle:uitextborderstyleroundedrect];

[self.view addsubview:namefield];

[self.view addsubview:pwdfield];

uibutton * loginbtn = [uibutton buttonwithtype:uibuttontyperoundedrect];

[loginbtn setframe:cgrectmake(0, 0, 50, 30)];

[loginbtn setcenter:cgpointmake(200, 200)];

[loginbtn addtarget:self action:@selector(logintoweibo:) forcontrolevents:uicontroleventtouchupinside];

[self.view addsubview:loginbtn];

uibutton * checkbtn = [uibutton buttonwithtype:uibuttontyperoundedrect];

[checkbtn setframe:cgrectmake(0, 0, 20, 20)];

[checkbtn setcenter:cgpointmake(160, 180)];

//選中之後得圖示

[checkbtn setbackgroundimage:[uiimage imagenamed:@"lock.png"] forstate:(uicontrolstate)uicontrolstatehighlighted];

[checkbtn setbackgroundimage:[uiimage imagenamed:@"lock.png"] forstate:(uicontrolstate)uicontrolstateselected];

//未選中

[checkbtn setbackgroundimage:[uiimage imagenamed:@"unlock.png"] forstate:(uicontrolstate)uicontrolstatenormal];

[checkbtn addtarget:self action:@selector(defaultcheck:) forcontrolevents:uicontroleventtouchupinside];

//使用者名稱和密碼已經儲存

if([accountdefaults boolforkey:ncuserdefaultboolforregister] == yes) 

[self.view addsubview:btn];

}

NSUserDefaults儲存顏色

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

NSUserDefaults儲存資料

1.用處 nsuserdefaults用來儲存類似使用者的配置 程式設定資訊等這些的資料 ios下可以使用nsuserdefault nskeyedarchiver sqlite coredata幾種常用的方式來儲存資料,其中nsuserdefaults用來儲存類似使用者的配置等這些的資料,後兩者使...

NSUserDefaults 用來儲存使用者設定資訊

nsuserdefaults 可以用來儲存使用者設定資訊,下次啟動程式的時候可以直接讀取,比儲存在檔案和資料庫中要方便很多。nsstring const int hall filter speed inthallfilterspeed nsstring const int hall filter s...