免费开源的iOS开发学习平台

偏好设置(NSUserDefaults):1-简介

偏好设置在iOS开发中的使用是比较普遍的,主要原因在于其简单易用。偏好设置本质上就是一个Plist文件,不过该Plist文件是由系统自动创建的,并且在Foundation框架中提供了一些专用的访问方法。

偏好设置简介

绝大多数iOS应用开发过程中,都会使用到偏好设置,比如保存用户名、密码、字体大小等设置。 Foundation框架提供了一套标准的解决方案为应用提供了偏好设置功能。每个应用都有一个NSUserDefaults实例,通过它来存取偏好设置。NSUserDefaults 基本上支持所有的原生数据类型NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger等等。关于偏好设置需要了解如下两个要点。

  • 偏好设置也是保存在应用的沙盒中的,保存的路径在Library/Preferences路径下

  • 偏好设置可以理解为是一个特殊的Plist文件,但由于其本质上还是Plist文件,因此,存储形式还是使用键值对的方式。

偏好设置常用方法和属性

在Foundation框架中的NSUserDefaults.h文件中,提供了NSUserDefaults类的方法和属性,常用的方法和属性有如下几个。

  • standardUserDefaults:获取系统默认的偏好设置对象
@property (class, readonly, strong) NSUserDefaults *standardUserDefaults;
  • 偏好设置写入方法
- (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;
- (void)setURL:(nullable NSURL *)url forKey:(NSString *)defaultName;
  • 偏好设置读取方法
- (nullable id)objectForKey:(NSString *)defaultName;
- (nullable NSString *)stringForKey:(NSString *)defaultName;
- (nullable NSArray *)arrayForKey:(NSString *)defaultName;
- (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
- (nullable NSData *)dataForKey:(NSString *)defaultName;
- (NSInteger)integerForKey:(NSString *)defaultName;
- (float)floatForKey:(NSString *)defaultName;
- (double)doubleForKey:(NSString *)defaultName;
- (BOOL)boolForKey:(NSString *)defaultName;
- - (nullable NSURL *)URLForKey:(NSString *)defaultName;
  • 移除某个键值对
- (void)removeObjectForKey:(NSString *)defaultName;
  • synchronize: 立即写入偏好设置Plist文件中
- (BOOL)synchronize;