iPhone开发之使用NSUserDefaults存储数据!!!
2015-10-24 20:22
489 查看
只支持: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"]
还有一个好的方法来存储你的当前实例的全局变量
再建立一个类,专用来存放你的全局的变量,这样可以分得更清楚
特别是数据相对较多,较复杂的情况
用专用的类来存储你的全局数据,是更好的办法
转自:http://www.cnblogs.com/ios-wmm/archive/2013/03/01/2646780.html
相关文章推荐
- Cocos2D-x内存管理的原则
- hdu2181C - 哈密顿绕行世界问题
- R语言-因子与向量的转换
- 2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest K题:King's Rout [topo排序]
- 关于线程启动
- Cocos2d-JS使用log方法控制台无法打印出结果
- 判断两个字符串是否为兄弟字符串
- DP-POJ-1458-Common Subsequence
- Perl学习笔记(三)
- [POJ1003]Hangover
- 在Windows上创建同样的Linux操作环境
- RunLoop--
- 河北民间组织管理系统、网站利益相关者和目标
- Java基础学习5(算术运算符)
- 冲突域和广播域
- php数据库编程:利用mysql扩展库操作数据库。
- BCGcontrolBar(六) RibbonBar编辑
- lightoj 1148 - Mad Counting (数学规律&模拟)
- No5 触摸事件
- Java归并算法递归实现