使用NSUserDefault存储数据

博客探讨了NSUserDefault在iOS开发中的作用,主要用于存储小量数据如用户配置。它支持的类型包括NSString, NSNumber, NSDate, NSArray和NSDictionary,并存储在app的/Library/Preferences目录下。虽然主要使用setObject和objectForKey方法,但应注意其非即时写入特性,可能导致数据未保存。解决此问题可使用synchronize方法强制同步。示例代码展示了如何使用NSUserDefault存储和读取数据。" 53205883,2245433,C语言指针操作实现二叉树遍历,"['C语言', '数据结构', '二叉树', '指针操作', '遍历算法']

NSUserDefaults用于存储数据量小的数据,例如用户配置。并不是所有的东西都能往里放的,
只支持:NSString, NSNumber, NSDate, NSArray, NSDictionary
存放于一个plist文件中。这个文件位于在 app同级目录的/Library/Preferences目录下

其实 NSUserDefaults主要就是setObject和objectForKey差不多就够了,要有多复杂的数据需要存储就直接用其他的方法好了;
此外,还有个什么registerDefaults方法,也不是很需要的样子

注意点:UserDefaults不是立即写入,而是根据时间戳定时的把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。出现以上问题。可以通过调用synchornize方法强制写入。

代码如下:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"111" forKey:@"myTest"];
[defaults synchronize];
NSString *testStr = [defaults objectForKey:@"myTest"];
NSLog(@"testStr is: %@",testStr);

=============例子==========

//方法1:在需要使用到的地方写入下列代码即可,无需导入任何文件

//存数据
NSUserDefaults *appDefault =[NSUserDefaultsstandardUserDefaults];
[appDefault setObject:@"123" forKey:@"one"]; 

// saving an NSInteger
[appDefault setInteger:42 forKey:@"integerKey"];

// saving a Double
[appDefault setDouble:3.1415 forKey:@"doubleKey"];

// saving a Float
[appDefault setFloat:1.2345678 forKey:@"floatKey"];


//读数据 
NSUserDefaults *appDefault =[NSUserDefaultsstandardUserDefaults]; 
NSLog(@"qq%@",[appDefault objectForKey:@"one"]);

// getting an NSString
NSString *myString = [appDefault stringForKey:@"keyToLookupString"];

// getting an NSInteger
NSInteger myInt = [appDefault integerForKey:@"integerKey"];

// getting an Float
float myFloat = [appDefault floatForKey:@"floatKey"];

//方法2:全局定义,即不用每个使用到的地方都写 NSUserDefaults *appDefault =[NSUserDefaultsstandardUserDefaults]; 语句

//AppDelegate.h文件中添加
#define appDelegate ((AppDelegate *)[[UIApplication sharedApplication] delegate])
@property (assign, nonatomic)NSUserDefaults *appDefault;

//AppDelegate.m文件中添加
@synthesize appDefault;
appDelegate.appDefault = [NSUserDefaults standardUserDefaults];

//顺带初始化下
[appDelegate.appDefault setObject:NULL forKey:@"one"];

然后在任意使用的地方添加:

//存数据
  [appDelegate.appDefault setObject:@"122333" forKey:@"one"];
//读数据
[appDelegate.appDefault objectForKey:@"one"]

注意注意
数组或字典里面的数据也必须以上的类型,若存储其他对象需要对复杂对象进行归档和反归档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值