UserDefaults 是? iOS 開發(fā)中經(jīng)常用到的工具之一, 一般用來保存設(shè)置信息.
UserDefaults 使用 plist 記錄保存的數(shù)據(jù), 所以能保存的數(shù)據(jù)類型只有數(shù)字, 布爾, 字符串, NSData, NSDate, 也能保存數(shù)組, 或是字典.
基本使用
獲取 UserDefaults
+ standardUserDefaults
保存數(shù)據(jù)
- setObject:forKey:
可以用來保存對象, 類型只能是 NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary.
還有幾個簡便方法
- setBool:forKey:
- setInteger:forKey:
- setFloat:forKey:
- setDouble:forKey:
- setURL:forKey:
這個有點特別, 分2種情況
- 如果 URL 不是文件 url , 會調(diào)用
+[NSKeyedArchiver archivedDataWithRootObject:]
把 url 轉(zhuǎn)換為 NSData 保存 - 文件 URL 會獲取文件的絕對路徑, 并保存為字符串類型
讀取數(shù)據(jù)
保存數(shù)據(jù)一樣, 除了
- objectForKey:
之外, 還有若干的簡便方法
- URLForKey:
- arrayForKey:
- dictionaryForKey:
- stringForKey:
- stringArrayForKey:
- dataForKey:
- boolForKey:
- integerForKey:
- floatForKey:
- doubleForKey:
還有一個方法 ,可以提取出所有保存的數(shù)據(jù), 并以字典方式展現(xiàn)
- dictionaryRepresentation
所有的方法, 如果對應(yīng)數(shù)據(jù)不存在, 則返回 nil 或是0 , NO
刪除數(shù)據(jù)
- removeObjectForKey:
寫入硬盤
調(diào)用 setXXXForKey 并不會立即寫入硬盤, 如果需要立即寫入, 可以調(diào)用這個方法, 不會這個方法不宜每次保存數(shù)據(jù)后調(diào)用, 會影響性能
- synchronize
設(shè)定初始值
有些時候, 你需要設(shè)置一些初始值, 比如默認(rèn)音量
- registerDefaults
[userDefault registerDefaults:@{@"volume":@0.5}];
如果某個 key 已經(jīng)有值了, 那么再設(shè)定默認(rèn)值就沒用了, 所以你可以放心大膽地設(shè)置默認(rèn)值, 不用去考慮用戶是否已經(jīng)有自定義的數(shù)據(jù)