IOS 数据持久化(二)—— 偏好设置

时间:2022-09-11 23:16:16

很多 IOS 应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,IOS 提供了一套标准的解决方案来为应用加入偏好设置功能。

每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。

下面给出代码示例:

//1.获得NSUserDefaults文件
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//2.向文件中写入内容(比如,保存用户名、字体大小、是否自动登录)
[userDefaults setObject:@"huangfei" forKey:@"username"];
[userDefaults setFloat:18.0 forKey:@"text_size"];
[userDefaults setBool:YES forKey:@"auto_login"];
//2.1立即同步
[userDefaults synchronize];
//3.读取文件
NSString *username = [userDefaults objectForKey:@"username"];
float textSize = [defaults floatForKey:@"text_size"];
BOOL autoLogin = [defaults boolForKey:@"auto_login"];

注意点
(1)UserDefaults 设置数据时,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了 set 方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题,可以通过调用 synchornize 方法强制写入;

[defaults synchornize];

(2)偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据;

(3)偏好设置会将所有数据保存到同一个文件中。即 preference 目录下的一个以此应用包名来命名的 plist 文件。