您当前的位置:首页 > 计算机 > 编程开发 > Objective-C

OC中用户默认设置

时间:05-12来源:作者:点击数:

在实际开发过程中,有一种能够自行保存数据的方式,通过深入地了解,我们会发现这种保存数据的方式同样是将数据保存到plist文件中,通常管这种存储小型数据的方式:用户默认设置。

举一个例子,我们通常使用软件,第一次使用的时候,它会让我们输入登录信息。而以后使用的时候,它直接就帮我们登陆上了,不用每次使用都输入登录信息。这个功能,开发人员是怎么实现的呢?

通过下面的例子,模拟一下:

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"logined"] isEqualToString:@"OK"]) {
        NSLog(@"您登陆过");
    }else{
        NSLog(@"你第一次登陆");
        NSUserDefaults * userDefaults=[NSUserDefaults standardUserDefaults];
        [userDefaults setObject:@"OK" forKey:@"logined"];
    }
       return 0;
}

第一次运行,输出结果:你第一次登陆

第二次运行,输出结果:您登陆过

第n次运行,输出结果:您登陆过

可以看到,问题很容易地就被解决了。我们来分析一下,这几行代码是怎么实现的:

首先,要学会几个知识点:

1、NSUserDefaults,这个类是专门用作存储用户默认设置的(从名字就可以了解到),这个类,我们只需要知道有数的几个方法就可以。

2、standardUserDefaults是一个类方法,通过查询它,可以看到,他返回的本类的一个对象,这是一个单例(上一章讲过)。通过这个方法,我们能过获得唯一的一个对象。

3、此外,我们只需要知道这个类的两个方法,就能实现登录的功能:
         setObject:@"OK" forKey:@"logined":可以看到,用户默认设置是通过键值对的方式存储数据(和字典的使用类似)
         objectForKey:@"logined":通过键,得到相应的值

通过上面的讲解,模拟登录的例子应该就能看懂了,我给大家简单地梳理一下编程思路,大家可以跟着编程思路独立实现一下登录的功能:

1、判断用户是否登录过(使用NSUserDefaults类通过键查找对应的登陆信息,由于是自己设计的软件,所以登录信息的键值对是提前设计好的)

2、如果登录过,就跳过登录界面,直接进入软件主界面。

3、如果没登过,跳转到登陆界面,如果用户输入的登录信息正确,通过NSUserDefaults类提供的方法将信息进行保存

通过上面的学习,可能你会有疑问,NSUserDefaults类将登陆信息保存到哪了呢?

其实,当你通过这种方式存储数据的时候,代码底层帮你在某个地方创建了一个plist文件,对于你现在这台机器来说,每次当你运行这个程序时,都会去调取文件中的数据。

下面带着大家一起来将NSUserDefaults创建的plist文件找出来:

首先,请大家先在main.m文件中原有代码下面拷贝一下这段代码:

NSString * path=[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"%@",path);

这段代码是获取Library文件夹路径的代码,运行程序,看到path输出一个路径,我们通过这个路径找到响应的文件夹:

找到资源库之后,我们找到Preferences文件夹:

进入这个文件夹之后,我们通过搜索我们的工程名就能找到创建的plist文件:

进入plist文件就能看到我们存储的相关数据,例如,这个例子中的数据就储存在这个文件中:

通过亲身查找这个隐藏创建的plist文件,相信大家通过NSUserDefaults类保存用户数据有了更深入的认识。对于NSUserDefaults类来讲,只需要大家记住:

1、运用类中提供的单例,来获取唯一的NSUserDefaults类对象。

2、学会通过键值对的方式存取数据。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门