用戶輕量級(jí)的數(shù)據(jù)持久化,主要用于保存用戶程序的配置等信息,以便下次啟動(dòng)程序后能恢復(fù)上次的設(shè)置.
該數(shù)據(jù)實(shí)際上是以"鍵值對(duì)"形式保存的(類似于NSDictionary),因此我們需要通過 key 來讀取或者保存數(shù)據(jù)(value).
NSUserDefaults 能直接儲(chǔ)存的數(shù)據(jù)格式有:
- NSNumber ( Integer、Float、Double )
- NSString
- NSDate
- NSArray
- NSDictionary
- BOOL
注意
- Objective C 中無法直接儲(chǔ)存 Int類型的對(duì)象只能儲(chǔ)存NSNumber類型的對(duì)象;(很多時(shí)候需要有個(gè)轉(zhuǎn)換過程)
- Swift中可以直接儲(chǔ)存 Int類型的對(duì)象,因?yàn)镾wift可能做了對(duì)應(yīng)的轉(zhuǎn)換。
- 關(guān)于存 Bool 值 其實(shí)儲(chǔ)存的形式是 Int
具體使用如下:
-
獲取一個(gè)NSUserDefaults引用:
let userDefaults = NSUserDefaults.standardUserDefaults() -
保存數(shù)據(jù)
userDefaults.setValue("this a test for userDefault", forKey: "keyOne"); -
讀取數(shù)據(jù)
userDefaults.doubleForKey("double") 其他數(shù)據(jù)的存取
The NSUserDefaults class provides convenience methods for accessing common types such as floats, doubles, integers, Booleans, and URLs. A default object must be a property list, that is, an instance of (or for collections a combination of instances of): NSData,NSString, NSNumber, NSDate, NSArray, or NSDictionary. If you want to store any other type of object, you should typically archive it to create an instance of NSData.
NSUserDefaults提供輕量級(jí)的方法去獲取各種不同數(shù)據(jù)類型的數(shù)據(jù)(舉例:float, double , integer , Bool , URL). 對(duì)象必須是能夠存入Dictionary的對(duì)象: NSData NSString NSNumber NSDate NSArray NSDictionary.如何你想存入其他類型的數(shù)據(jù),你需要轉(zhuǎn)換成NSData。
保存數(shù)據(jù):
NSData *objColor = [NSKeyedArchiver archivedDataWithRootObject:[UIColor redColor]];
[[NSUserDefaults standardUserDefaults]setObject:objColor forKey:@"myColor"];
讀取數(shù)據(jù):
NSData *objColor = [[NSUserDefaults standardUserDefaults]objectForKey:@"myColor"];
UIColor *myColor = [NSKeyedUnarchiver unarchiveObjectWithData:objColor];