美文网首页
数据持久化之NSUserDefaults

数据持久化之NSUserDefaults

作者: 虫子疯狂也可怕 | 来源:发表于2016-03-31 17:40 被阅读255次

能将内存中的数据模型转换为存储模型,并能在将来需要时将存储模型还原为数据模型的机制。

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帮我们封装好了 读写方法。

相关文章

网友评论

      本文标题:数据持久化之NSUserDefaults

      本文链接:https://www.haomeiwen.com/subject/szgelttx.html