iOS 数据持久化 NSUserDefault 的使用 NSUserDefaults读取和写入自定义对象

基本使用:

创建一个user defaults方法有多个,最简单得快速创建方法:

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

添加数据到 user defaults:

[accountDefaults setObject:nameField.text forKey:UserDefaultNameKey];

也可以添加基本数据类型int, float, bool等,有相应得方法

[accountDefaults setBool:YES forKey:UserDefaultBoolKey];
从user defaults中获取数据:
[accountDefaults objectForKey:NCUserDefaultNameKey]

[accountDefaults boolForKey: UserDefaultBoolKey];
要点:

NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。

针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。

例子代码2:

代码基本如下:

 NSArray* arr = [[NSArray alloc] initWithObjects:@"111", @"222",@"22223333",nil];

    NSMutableArray* marr = [[NSMutableArray alloc] initWithArray:arr];

    NSLog(@"%i",[arr count]);
    NSLog(@"%i",[marr count]);

    NSUserDefaults *mydefault = [NSUserDefaults standardUserDefaults];
    [mydefault setObject:arr forKey:@"test1"];
    [mydefault setObject:marr forKey:@"test2"];
    [mydefault synchronize];  //保存到disk

    NSArray* getarr=[mydefault objectForKey:@"test1"];
    NSLog(@"test1=%i",[getarr count]);
    NSArray* getmarr=[mydefault objectForKey:@"test2"];
    NSLog(@"test2=%i",[getmarr count]);

注意一点:只能存储基本对象,如果是自定义的对象,需要转换成nsdata存储进去才可以

iPhone中在本地存储数据简单的说有三种方式:数据库、NSUserDefaults和文件。
NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的,只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary,详细方法可以## 标题 ##查看类文件。

NSUserDefaults读取和写入自定义对象

NSUserDefaults可以存取一些短小的信息。
比如存入再读出一个字符串到NSUserDefaults:
但是并不是所有的东西都能往里放的。NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。

采用全局变量NSUserDefault

可以采用全局变量NSUserDefault来在整个项目传递变量。
使用实例:
在A类中:

 NSUserDefaults  * userDefault = [NSUserDefaultsstandardUserDefaults];

    [userDefault setBool:YES forKey:@"isonline"];
    [userDefault setInteger:111 forKey:@"online_user_number"];
    ...等等。参见NSUserDefault用法。

在B中:获取A传递过来的参数

    NSUserDefault  * userDefault = [NSUserDefault standardUserDefault];
    BOOL isonline = [userDefault boolForKey:@"isonline"];
    NSInteger onlineUserNumber = [userDefault integerForKey:@"online_user_number"];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值