iOS中NSUserDefaults的用法(轻量级本地数据存储)

iOS中NSUserDefaults的用法(轻量级本地数据存储)

作者@马仔哥


介绍

NSUserDefaults 是一个单例类

1.首先大家一提到NSUserDefaults一用要知道这个类是一个单例类,单例类是单例模式的一个是类,而模式单例是一种常见的编程方式。在iOS中,单例模式很常见,它用于确保特定类的安全性和线程的正确性。

1.自身的特点决定了功能作用

1.NSUserDefaults类为和默认的系统进行交互提供的一个系统编程接口。这个类的特点是可以存储一些小的数据,存取方式非常的简单方便,并且是保存在本地,所以这些特点一般用来存储用户的一些特殊的设置。另外存储用户的帐号和密码信息,方便下次登录使用,用这个类是我的首选的方法。


2.你可以在程序运行的时候从用户默认的数据库中读取程序的设置。同时NSUserDefaults的缓存避免了在每次读取数据时候都打开用户默认数据库的操作。可以通过调用synchronize方法来使内存中的缓存与用户默认系统进行同步。
3.NSUserDefaults类提供了非常方便的方法来获取常用的类型,例如 floats,doubles,intergers,Booleans,URLs。所以一个NSUserDefaults的对象必须是属性表,这也就是说 我们可以存储NSData,NSString,NSNUmber,NSDate,NSArray,NSDictionary这些实例。如果你想存储其他类 型的对象,你要将其归档并创建一个NSData来实现存储。
4.从NSUserDefaults返回的值是不可改变的,即便是你在存储的时候使用的是可变的值。例如你使用mutable string做为“MyStringDefault”的值,当你做使用stringForKey:方法获取的值,这个值仍然是不可变的。


废话不说我用一个实例来说明一下这个的用法


存的用法

//保存信息到用户的配置持久化存储中
- (void)saveToUserDefaults{
    //获取用户配置持久话对象
    //这个是个单例,线程更加 的安全
    NSUserDefaults * userDefaults =[NSUserDefaults standardUserDefaults];
    //写数据
    [userDefaults setValue:@"read" forKey:@"welcome"];
    //同步数据 ,将内存中存储转化为存储模型(持久化);
    [userDefaults synchronize];
}

读的用法

NSString * strUserPro =[self readFromUserDefaults];
    if(strUserPro!=nil&&[strUserPro isEqualToString:@"read"])
    {
       //表示已经查看过欢迎的页面
    //直接显示主界面
        MainViewController * mainVC =[[MainViewController alloc]init];
        self.window.rootViewController =mainVC;   
    }else{
    WelcomeViewController * welcomeVC =[[WelcomeViewController alloc]init];
    self.window.rootViewController =welcomeVC;
    }

/ 从持久化存储中获取是否查看欢迎页
- (NSString *)readFromUserDefaults {
    // 先定义变量用于保存获取的数据
    NSString *strReturn = nil;
    // 获取用户配置类的对象 -- 持久化存储中的属性列表对象
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    // 通过实例方法获取存储的数据
    strReturn = [userDefaults stringForKey:@"welcome"];
    return strReturn;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值