NSUserDefaults見解

NSUserDefaults是一種用於存儲小型數據的方式,當數據比較大時就不合適了,此時可以換一種方式 如NSKeyedArchiver歸檔,sqlite數據庫,core data來存儲,但是NSUserDefaults只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary 會將存儲的數據生成一個plist文件,保存在沙盒的Preferences文件夾下

注意:UserDefaults不是立即寫入,而是根據時間戳定時的把緩存中的數據寫入本地磁盤。所以調用了set方法之後數據有可能還沒有寫入磁盤應用程序就終止了。

出現以上問題。可以通過調用synchornize方法強制寫入

一般都可以使用

[[NSUserDefaults standardUserDefaults]setObject:<#(id)#> forKey:<#(NSString *)#>]

來存儲數據

[[NSUserDefaults standardUserDefaults]objectForKey:<#(NSString *)#>]

取數據

[[NSUserDefaults standardUserDefaults]registerDefaults:<#(NSDictionary *)#>]

也可以用來存數據 不過是直接存儲字典

 [[NSUserDefaults standardUserDefaults]registerDefaults:@{@"1": @"green"}];

 [[NSUserDefaults standardUserDefaults]synchronize];

每次程序啓動的時候調用registerDefaults: 方法都是安全的 所以該存儲方法一般都是在appdelegate中使用  該方法不會覆蓋用戶設置的值   意思是當用戶在其他地方將green的值改爲red   當程序再次運行到該方法時不會將red改爲green了   以後值都會是red  就是這點區別  這一特性在某些方面挺有用的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章