NSUserDefaults

来源:互联网 发布:人人网数据库 编辑:程序博客网 时间:2024/05/29 07:56

NSUserDefaults 用来存储一些轻量化的数据,最常用的就是保存用户名,密码等注册页面的编写时使用.

NSUserDefaults存储时是按键值对,即字典的形式存储的,因此KVC和其配合使用就比较多.

NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary,BOOL  并且是不可变的对象的存储,即使你存入一个mutable string,虽然写入userdefaults时是一个可变的字符串,但是在调用读取到这个字符串的时候,它仍是不可以改变的.


//UserDefaults的创建类似于一种单例模式,通常的创建通过类方法调用创建:

NSUserDefaults *user = [NSUserDefaultsstandardUserDefaults];

在头文件中可以查到一些常用的使用方法:

- (nullableid)objectForKey:(NSString *)defaultName;

- (void)setObject:(nullableid)value forKey:(NSString *)defaultName;

- (void)removeObjectForKey:(NSString *)defaultName;


我以一个简单的例子来解释一下userdefaults的简单使用:

在一个页面上添加两个button,一个textfiled控件.

现在textField中输入一串字符,将字符保存下来然后点击第一个 button时实现userdefaults的写入:

-(void)buttonAction:(UIButton *)sender{

先将textField对象引入,将其text写入userdefaults:

    UITextField *afiled = (UITextField *)[self.windowviewWithTag:1];

NSUserDefaults的类方法创建:

    NSUserDefaults *user = [NSUserDefaultsstandardUserDefaults];

通过键值对方式写入:

    [usersetObject:afiled.textforKey:@"password"];

}


 接下来在试图控制器中调用NSUserDefaults:

//NSUserDefaults类似于单例的创建,这里调出的userDefaults和button中的是一个对象:

  NSUserDefaults *use = [NSUserDefaultsstandardUserDefaults ];

//将值赋textFiled.text :

   field.text = [useobjectForKey:@"password"];


关闭应用程序,重新启动,就会在textField.text中显示刚才输入的字符串.

userdefaults的本地文件存储的路径可以通过打印HomeDirectory来获得:

 NSLog(@"%@",NSHomeDirectory());

通过的打印的路径下在/Library/Prefereces可以看到存储的plist文件,这个就是刚才创建的userDefaults.


如果想取消userDefaults内所存储的内容可以通过直接修改plist文件中的数据,或者使用

removeObjectForKey: 方法来删除.

删除对应条目的具体实现如下:

在上面已经显示了textfField.text字符串的工程下继续添加一个button,其对应方法的实现如下:

-(void)button1Action:(UIButton *)sender{

    NSUserDefaults *use = [NSUserDefaultsstandardUserDefaults ];

    [use removeObjectForKey:@"password"];

}

点击这个button然后重新运行工程就会发现之前所输入的字符串无法显示了,同时可以到对应的plist文件中去查看就会发现之前添加的键值对已经被删除.




0 0
原创粉丝点击