NSUserDefaults類用於保存應用程序設置和屬性以及用戶數據等輕量級數據。例如,你可以存儲用戶在應用程序中使用的圖片或默認顏色方案。這些對象存儲在iOS所謂的“defaults系統”中。iOS的defaults系統在整個app中都是可用的,因此存放到defaults系統中的數據也是整個應用程序生命周期中可用的。也就是說,無論用戶關閉程序還是關機,在用戶再次打開程序或開機後這些數據仍然存在。NSUserDefaults可以存儲的數據類型包括:
如果你想保存其他類型,如UIImage,你應該進行編碼(即archive),或者將它轉換為NSData、NSNumber或者NSString。注意:密碼最好不要存儲在NSUserDefaults裡,要存儲也必須用AES/DES加密存儲,更安全的方法是 https://github.com/ldandersen/scifihifi-iphone。
把密碼存儲在NSUserDefault or plist裡的後果: http://www.shushao.com/news/info/item/203510-ios
用NSUserDefaults存儲的數據下次程序運行的時候依然存在,它把數據存儲在什麼地方了?如何能夠清除?
其實它存儲在應用程序內置的一個plist文件裡,這個可以根據路徑看到。 比如說這個是你的程序沙盒位置//將文本框的內容保存到NSUserDefaults
NSUserDefaults *savePtb = [NSUserDefaultsstandardUserDefaults];
[savePtbsetObject:self.textField.textforKey:@"input"];
//讀取NSUserDefaults中的數據
NSUserDefaults *readPtb = [NSUserDefaultsstandardUserDefaults];
NSString *pstr = [readPtbobjectForKey:@"input"];
self.self.inputText.text = pstr;
有時候,我們需要在應用程序第一次打開時做一些事情,可以用NSUserDefaults來判斷應用程序是否第一次執行,
可以在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法利進行判斷:
NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];
NSNumber *number = [userDFobjectForKey:@"H"];
if(number ==nil)//程序第一次執行
{
NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];
[userDF setValue:[NSNumbernumberWithBool:YES]forKey:@"H"];
[userDFsynchronize];
要執行的其他代碼;
}
else//程序不是第一次執行
{
其他代碼; }