NSUserDefaults的使用

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

NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults];

添加数据到 user defaults:

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

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

[accountDefaults setBool:YES forKey:UserDefaultBoolKey];

末尾建议追加

[userDefault synchronize];//立即存入

因为NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,使用synchronize强制立即将数据写入磁盘

从user defaults中获取数据:

[accountDefaults objectForKey:NCUserDefaultNameKey];

[accountDefaults boolForKey: UserDefaultBoolKey];

要点:

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

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

细节用法:

如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储:

NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];

NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil];

[mySettingData setObject:arr forKey:@"arrItem"];

[mySettingData setObject:@"admin" forKey:@"user_name"];

[mySettingData setBOOL:@YES forKey:@"auto_login"];

[mySettingData setInteger:1 forKey:@"count"];

往NSUserDefaults添加数据后,它们就变成了全局的变量,App中即可读写NSUserDefault中的数据:

NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];

NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);

NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);

NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);

如果想删除某个数据项,可以使用removeObjectForKey删除数据:

[mySettingData removeObjectForKey:@"arrItem"];

[mySettingData synchronize];

运行上面的语句后,NSUserDefaults中的数据即被写入到.plist文件中,如果是在模拟器上运行程序,可以在Mac的/Users/YOUR-USERNAME/Library/Application Support/iPhone Simulator/4.1/Applications/YOUR-APP-DIR/Library/Prefereces目录下面找到一个文件名为YOUR-Bundle_Identifier.plist的plist文件,用Xcode打开该文件,可以看到刚才写入的数据。

你可能感兴趣的:(NSUserDefaults的使用)