nsuserdefaults適合儲存輕量級的本地資料儲存,比如儲存登陸介面的使用者名稱、密碼之類的資料,並使之本地持久化。
nsuserdefaults支援的資料格式有:nsnumber(integer、float、double),nsstring,nsdate,nsarray,nsdictionary,bool型別。
[nsuserdefaults standarduserdefaults]
是系統提供的單例方法。
一般通過[[nsuserdefaults standarduserdefaults]
setobject:forkey:]來儲存資料。
通過[[nsuserdefaults standarduserdefaults] objectforkey:]
來獲取已存資料。
每次儲存資料後用[[nsuserdefaults standarduserdefaults] synchronize]
方法持久化資料,直接同步到檔案裡。 nsuserdefaults儲存方式跟字典類似,事實上,nsuserdefaults就是乙個plist檔案,它的資料都儲存在應用程式內建的乙個plist檔案裡。
例:
nsdictionary *userinfodic = [nsdictionary dictionary];
[userinfodic setobject:@"admin"
forkey:@"username"];
[userinfodic setobject:@"123456"
forkey:@"password"];
[[nsuserdefaults standarduserdefaults] setobject:userinfodic forkey:@"userinformation"];
//持久化資料,直接同步到檔案裡
[[nsuserdefaults standarduserdefaults] synchronize];
但是nsuserdefaults不能儲存自定義的類物件,若把乙個物件儲存到nsuserdefaults會報錯。聰明的人會把物件放進陣列,再把陣列存入nsuserdefaults,不過這樣做也是錯誤的,因為陣列中包含了自定義物件。 若要在nsuserdefaults中存入自定義物件,則物件需要遵循nscoding協議,並實現encodewithcoder
方法和initwithcoder
方法。
還有要注意的一點是:型別為nsnull
的空資料也是無法存入nsuserdefaults的。若資料中有nsnull
型別空資料,把它置nil
或@""
即可存入nsuserdefaults,否則程式會崩潰。
如果要儲存的nsdictionary
裡面有nsnull
物件,可以使用遍歷方法將nsnull
物件轉為@""
物件再次儲存,下面是乙個簡單的處理方法:
對基類nsdictionary新增category,即下面的公有方法,使用nsdictionary的物件即可呼叫該方法:
- (nsdictionary *)safedictionarywithdic:(nsdictionary *)dic
}];return [[nsdictionary alloc] initwithdictionary:mutabledic];
}
總結:nsuserdefaults是乙個輕量級的資料庫,使用起來還是很方便的! ios NSUserDefaults使用注意事項
nsuserdefaults適合儲存輕量級的資料,他不僅可以儲存基本資料型別,還可以儲存nsnumber integer float double nsstring,nsdate,nsarray,nsdictionary,bool型別。nsuserdefaults standarduserdefau...
iOS NSUserDefaults使用報錯問題
在使用nsuserdefaults的時候插入資料有時候會報以下錯誤 list object new msg 1 usr id 2 usr name usr tx for key newmsgarraydict 這種錯誤的原因是插入了不識別的資料型別,nsuserdefaults支援的資料型別有 ns...
Javascript cssText基本使用指北
一 csstext之起步 那些年,我們是這樣設定樣式的 style.width 233px style.position fixed style.left 233px 現如今,我們可以這樣搞 style.csstext width 233px height 233px position fixed ...