一、NSUserDefaults 的用法,主要是保存和读取数据
用途:
主要用来存储用户系统的设备信息,但有的时候也可以在程序的任何地方用来存储数据,作为全局数据来访问,例如视图切换需要进行登录时。
当视图切换需要登录时可以对NSUserDefault文件进行判断决定跳转页面。
偏好设置的写入:
很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能
每个应用都有个NSUserDefaults实例,它是一个单例对象,通过它来存取偏好设置,设置信息都是键值对的形式。
例如:保存用户名、字体大小、是否自动登录
1、初始化一个 NSUserDefault
+ (NSUserDefaults *)standardUserDefaults;
2、设置数据的方法
- (void)setObject:(nullable id)value forKey:(NSString *)defaultName;
- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
- (void)setFloat:(float)value forKey:(NSString *)defaultName;
- (void)setDouble:(double)value forKey:(NSString *)defaultName;
- (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
3、读取数据的方法
- (nullable id)objectForKey:(NSString *)defaultName;
- (nullable NSString *)stringForKey:(NSString *)defaultName;
- (nullable NSArray *)arrayForKey:(NSString *)defaultName;
- (nullable NSDictionary *)dictionaryForKey:(NSString *)defaultName;
- (nullable NSData *)dataForKey:(NSString *)defaultName;
- (nullable NSArray *)stringArrayForKey:(NSString *)defaultName;
- (NSInteger)integerForKey:(NSString *)defaultName;
- (float)floatForKey:(NSString *)defaultName;
- (double)doubleForKey:(NSString *)defaultName;
- (BOOL)boolForKey:(NSString *)defaultName;
4、删除数据的方法
- (void)removeObjectForKey:(NSString *)defaultName;
5、保存数据
如果不手动调用,系统会自动保存,但时间不定
- (BOOL)synchronize;
二、使用方法
1、获得NSUserDefaults文件
NSUserDefaults*userDefaults = [NSUserDefaults standardUserDefaults];
2、向文件中写入内容
[userDefaults setObject:@"AAA"forKey:@"a"];
[userDefaults setBool:YESforKey:@"sex"];
[userDefaults setInteger:21forKey:@"age"];
3、立即同步
[userDefaults synchronize];
4、读取文件
NSString*name = [userDefaults objectForKey:@"a"];
BOOL sex = [userDefaults boolForKey:@"sex"];
NSInteger age = [userDefaults integerForKey:@"age"];
5、删除文件
[userDefaults removeObjectForKey:@"sex"];
三、存储id类型数据
+ (void)setValue:(id)value andKey:(NSString*)key {
NSUserDefaults*userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:value forKey:key];
[userDefaults synchronize];
}
四、获取数据
+ (NSString*)getValueByKey:(NSString*)key {
NSUserDefaults* settings = [NSUserDefaults standardUserDefaults];
NSString*value = [settings objectForKey:key];
return value;
}