文件存储的几种方式总结
2016-02-14 22:01
525 查看
// // ViewController.m // fileStore // // Created by LoveQiuYi on 16/1/22. // Copyright © 2016年 LoveQiuYi. All rights reserved. // 文件存储的几种方式总结 #import "ViewController.h" #import "Person.h" /** * 宏定义文件名以及文件存储的路径 * * @param NSDocumentDirectory 文件的主目录 * @param NSUserDomainMask 用户目录 * @param YES * @return 应用程序沙盒路径 * 注意和直接获取NSHomeDirectory()->return NSString的区别:后面这个值获取到沙盒路径的根目录,上面的获取到document目录下 */ #define dataName @"data.plist" #define filePath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:dataName] #define archiverPath [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"data.archiver"] @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //plist文件的存储方式 //[self plistStore]; //[self userDefaultStore]; [self archiverData]; } -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //读取偏好设置的数据 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; //调用objectForKey来获取到数据 NSString * name = [defaults objectForKey:@"name"]; BOOL isMale = [defaults boolForKey:@"isMale"]; NSLog(@"name is %@ and sex is %d",name,isMale); //GCD保证整个程序运行期间里面的代码只执行一次 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(deleteDefaults) userInfo:nil repeats:YES]; NSLog(@"sdsdsdsd"); }); /** * 解档 * * @return Person对象,读取数据 */ Person * person = [NSKeyedUnarchiver unarchiveObjectWithFile:archiverPath]; NSLog(@"%@,%ld",person.name,(long)person.age); } #pragma mark - plist文件的存储 -(void) plistStore{ //定义一个数据 // NSArray * data = @[@"zhang",@"xin",@"strong"]; NSDictionary * data = @{@"name":@"zhangxin",@"age":@23}; NSString * doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]; NSString * path = [doc stringByAppendingPathComponent:@"data.plist"]; //数据写到文件里面去 [data writeToFile:path atomically:YES]; //注意存储的文件的格式要和输出的格式一致 NSDictionary * dic = [NSDictionary dictionaryWithContentsOfFile:path]; NSLog(@"%@",dic); } #pragma mark - 用户偏好设置 -(void) userDefaultStore{ //创建偏好设置 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; //设置数据 [defaults setObject:@"zhangxin" forKey:@"name"]; [defaults setBool:YES forKey:@"isMale"]; /** * 立刻写入磁盘存起来,因为用户偏好设置存数据是根据时间戳定时的把缓存数据写到磁盘,如果要立即写进去,要用synchonize */ [defaults synchronize]; } #pragma mark - 删除数据 -(void) deleteDefaults{ NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [defaults removeObjectForKey:@"isMale"]; [defaults synchronize]; //NSLog(@"name is %@ and sex is %d",name,isMale); } #pragma mark - 归档 (void) archiverData{ Person * person = [[Person alloc]init]; person.name = @"zhangxin"; person.age = 20; [NSKeyedArchiver archiveRootObject:person toFile:archiverPath]; } @end
相关文章推荐
- Exchange 2010 (二) MBX DAG部署
- 使用NSFileManager枚举目录种的内容(遍历目录)
- HDU 3555 Bomb(数位dp&记忆化搜索)
- Spring+Quartz(定时任务)
- NSString,NSData,NSFileManager常用方法
- 018 virtualbox上安装Mac OS Mavericks
- 月亮之眼
- File类
- 拓扑编号
- 1048. Find Coins (25)
- JVM如何判断对象是否需要被回收
- hdu 1201 18岁生日
- 敢想,是一切可能的开始。
- 从vmware技术团队跳槽到微软技术团队(comlan)
- sethc后门
- 敢想,是一切可能的开始。
- 敢想,是一切可能的开始。
- 敢想,是一切可能的开始。
- Linux学习分享:月薪3K到13K的距离有多远?
- NSURLSession