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 就是這點區別 這一特性在某些方面挺有用的