NSUserDfEfaults

简介: <p style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"> 创建一个user defaults方法有多个,最简单得快速创建方法:</p> <p style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line

创建一个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"];

目录
相关文章
|
3月前
|
资源调度 JavaScript 前端开发
介绍一下ts
介绍一下ts
26 1
|
5月前
ts文件解密
ts文件解密
83 0
|
6月前
|
JavaScript 前端开发 开发者
ts详解以及相关例子(一篇带你详细了解ts)
ts详解以及相关例子(一篇带你详细了解ts)
44 1
|
7月前
|
JavaScript 前端开发 安全
|
8月前
|
JavaScript 前端开发
ts - ts基础
https://www.tslang.cn/ TypeScript是Microsoft公司注册商标。 TypeScript具有类型系统,且是JavaScript的超集。 它可以编译成普通的JavaScript代码。 TypeScript支持任意浏览器,任意环境,任意系统并且是开源的。
|
9月前
|
JavaScript 开发者
什么是TS?
什么是TS?
101 0
|
11月前
【TS】ts中的类:class
【TS】ts中的类:class
73 0
【TS】ts中的类:class
|
安全
ts是什么
VSCode提示 例如:定义者指定了一个方法: export function foo(name: string): number { return name.length }
120 0