能将内存中的数据模型
转换为存储模型
,并能在将来需要时将存储模型
还原为数据模型
的机制。
NSUserDefaults
- 直接使用原始的文件操作API,不管是C语言的还是OC的都不太方便
- Cocoa会为每个app自动创建一个数据库,用来存储App本身的偏好设置,如:开关
值,音量值之类的少量信息 - NSUserDefaults使用时用 [NSUserDefaults standardUserDefaults] 接口获取单例对象
- NSUserDefaults本质上是以Key-Value形式存成plist文件,放在App的Library/Preferences目录下
- 这个文件是不安全的,所以千万不要用NSUserDefaults来存储密码之类的敏感信息,
用户名密码应该使用KeyChains来存储
1 . 保存数据
- (IBAction)saveConfig:(id)sender {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:self.toggle.on forKey:@"toggle"];
float progress = [self.progressTextField.text floatValue];
[userDefaults setFloat:progress forKey:@"progress"];
[userDefaults setObject:self.inputTextField.text forKey:@"input"];
// keeps the in-memory cache in sync with a user’s defaults database
[userDefaults synchronize];
}
2 . 读取数据
- (void)loadConfig{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
self.toggle.on = [userDefaults boolForKey:@"toggle"];
self.progressView.progress = [userDefaults floatForKey:@"progress"];
self.progressTextField.text = [NSString stringWithFormat:@"%.2f",self.progressView.progress];
self.inputTextField.text = [userDefaults stringForKey:@"input"];
}
说明:
对NSUserDefaults单例对象的操作,实质上还是对PList文件 (Library/Preferences/<Application BundleIdentifier>.plist)的读写,只是Apple帮我们封装好了 读写方法。
网友评论