ios 几种数据存储方式
2016-04-13 15:56
477 查看
<span style="font-size:18px;">#import "ViewController.h" #import "Person.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } /** * 沙盒 */ - (void)test { // 获取Caches路径 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject]; //stringByAppendingPathComponent不需要添加 / NSString *filePath = [docPath stringByAppendingPathComponent:@"Data"]; NSFileManager *manager = [NSFileManager defaultManager]; if (![manager fileExistsAtPath:filePath]) { // 创建文件夹(此处是Data 文件夹) [manager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil]; } // 在Data文件夹下创建test.plist文件 NSString *dataPath = [filePath stringByAppendingString:@"/test.plist"]; NSArray *arr = @[@"1",@"2"]; [arr writeToFile:dataPath atomically:YES]; NSLog(@"%@",dataPath); // 遍历子文件 // NSArray *files = [manager subpathsOfDirectoryAtPath:filePath error:nil]; // NSLog(@"%@",files); // if ([manager fileExistsAtPath:filePath]) { // [manager removeItemAtPath:filePath error:nil]; // 删除该目录下的文件夹 // } // 一般在下载图片或者文件时用的比较多 } /** * NSUserDefaults 一种轻量级的永久存储方式 NSUserDefaults支持的数据类型:NSNumber(NSInter,float,double),NSString,NSDate,NSArray,NSDictionary,BOOL 对于相同的key赋值,相当于一次覆盖,必须保证每一个key的唯一性 NSUserDefaults存储的对象全是不可变的(这一点非常关键,否则程序会崩溃的) */ - (void)test1 { // 这种方式的存储路径在 Library/Preferences就是偏好设置目录下 NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; [user setObject:@"likelin" forKey:@"name"]; // 如果存储可变对象怎么办?我们可以先将可变变成不可变对象 NSMutableArray *mutableArr = [NSMutableArray arrayWithObjects:@"jone",@"andy",@"blus", nil]; NSArray *array = [mutableArr copy]; [user setObject:array forKey:@"names"]; // 常见用处是一般在app 上登陆界面的记住密码,和自动登陆时用的比较多 } /** * 归档和反归档 */ - (void)test2 { NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; NSString *filePath = [path stringByAppendingPathComponent:@"person.data"]; Person *p = [[Person alloc] init]; p.name = @"likelin"; p.age = 26; p.height = 175; NSLog(@"%@",filePath); // 将person对象存储到person.data文件中 [NSKeyedArchiver archiveRootObject:p toFile:filePath]; // 从filePath中取出person对象存储的数据 Person *per = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; NSLog(@"%@-----%d-----%f",per.name,per.age,per.height); } @end </span>
相关文章推荐
- IOS获取系统通讯录联系人信息
- [IOS]应用设置和用户默认设置(附Demo文件)
- 模拟post请求-->测试api是否可用-->再交给ios开发
- iOS开发的一些奇巧淫技 [转]
- iOS 证书(纯属个人笔记,很乱,不易参考,只是为了简洁)
- IOS7 导航栏适配--translucent属性设置的问题
- iOS开发 AFNetworking 3.0使用遇到的问题补充
- iOS中NSAttributedString问题的一些解释
- ArcGIS Runtime SDK for iOS(一) – 实现地图的不同点的callout展示
- iOS开发-进阶:iOS调用WebService
- iOS自己捕获异常定位错误代码
- iOS获取相册工具
- iOS 提示框工具
- iOS 基于 MVC 的项目重构总结
- 获取最新iOS系统最新分布(官方)
- IOS开发--CoreData 入门
- iOS 8 CloudKit上手教程
- IOS实现验证码倒计时功能(二)
- 【译】iOS蓝牙编程指南 -- 核心蓝牙概述
- iOS开发CocoaPods使用详细说明