【ios系列】-数据储存
第一:plist属性列表
适用对象:仅仅是Foundation框架自带的一些类比如:NString\NSarry\NSDictionary\NSset\NSnumber\NSdata
使用:
1:调用对象的writeToFile方法就可以写入文件
2:调用对象的array(...)WithContentsOfFile方法就可以从文件读取对象内容
存储:
//1,获得沙盒跟路径
NSString *home = NSHomeDirectory();
NSLog(@"%@",home);
//2,doucument路径,方法会自动拼接”/“
NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
//3,NSString,字典,数组,NSData,NSNumber,常见的数据类型
//新建数据
NSArray *data = @[@"java",@10,@"lallal"];
NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
[data writeToFile:filePath atomically:YES];
读取:
//1,获得沙盒跟路径
NSString *home = NSHomeDirectory();
NSLog(@"%@",home);
//2,doucument路径
NSString *docPath = [home stringByAppendingPathComponent:@"Documents"];
//3,NSString,字典,数组,NSData,NSNumber,常见的数据类型
//文件路径
NSArray *data = @[@"java",@10,@"lallal"];
NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"];
//读取数据
NSArray *array = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"%@",array);
第二:偏好设置
本质上还是plist属性列表的方式存储
存储简单不关心文件夹和文件名,但是只能存储到一个文件中(不能储存大量数据)
存储:
//1,利用NSUserDefaults能直接访问软件的偏好设置文件夹
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//2,存储数据
[defaults setObject:@"tf" forKey:@"account"];
[defaults setObject:@"123" forKey:@"pwd"];
//3,立刻同步
[defaults synchronize];
读取:
//读取
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *account = [defaults objectForKey:@"account"];
NSLog(@"%@",account);
第三:NSCodeing
1:能将任何遵守了NSCodeing协议的对象塞进文件中
使用:
1:-(void)encodeWithCoder:(NSCoder *)aCoder
将对象归档的时候就会调用,(将对象写入到文件之前会调用)
在这个方法中说清楚;1:那些属性要进行存储,2:怎样储存
2:-(id)initWithCoder:(NSCoder *)aDecoder
从当前文件中解析对象是调用
在这个方法中说清楚,1:那些属性需要解析(读取),2:怎样解析这些属性
注:如果父类中也有属性需要归档或者读取,必须调用super的encodeWithCoder:和initWithCoder:方法
对象中调用:
在遵循协议NSCoding的实现“.m”文件中
//存储:需要重写的方法:
-(void)encodeWithCoder:(NSCoder *)aCoder
{
//将name属性进行编码,
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeInt:_age forKey:@"age"];
}
// 读取:需要重写的方法
-(id)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
_name = [aDecoder decodeObjectForKey:@"name"];
_age = [aDecoder decodeIntForKey:@"age"];
}
return self;
//调用父类的方法
// if (self = [super initWithCoder:aDecoder]) {
//
// }
}
注:如果是子类进行存取的话,需要在相应的方法第一行调用,这样父类中已经声明要进行归档的对象就不用重复声明了。
[super encodeWithCoder:aCoder];
if (self = [super initWithCoder:aDecoder]) {
}
实例,储存:
//归档
Person *p = [[Person alloc] init];
p.name = @"jack";
p.age = 10;
p.height = 1.89;
NSString *path = @"/Users/tengfei/Desktop/person.data";
[NSKeyedArchiver archiveRootObject:p toFile:path];
读取:
//读档
NSString *path = @"/Users/tengfei/Desktop/person.data";
Person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSLog(@"name:%@,age:%d",p.name,p.age);
---后面稍后进行介绍:
第四:SQLite
适用于大批量数据
第五:Core Data
ios5.0以后才出现,效率底下(SQLite3)
【ios系列】-数据储存的更多相关文章
- 【iOS系列】-UINavigationController的使用(Segue传递数据)
[iOS系列]-UINavigationController的使用 UINavigationController是以以栈(先进后出)的形式保存子控制器, 常用属性: UINavigationItem有 ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- iOS系列 基础篇 09 开关、滑块和分段控件
iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...
- iOS - JSON 数据解析
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
- 面试题汇总--数据储存/应用程序/UI控件/客户端的安全性与框架处理。。。
一 数据储存 1.如果后期需要增加数据库中的字段怎么实现,如果不使用 CoreData 呢?编写 SQL 语句来操作原来表中的字段1)增加表字段ALTER TABLE 表名 ADD COLUMN 字 ...
- 【iOS系列】-iOS开发,GET,POST请求使用
[iOS系列]-iOS开发,GET,POST请求使用 步骤: 1:实例化URL(网络资源) 2:根据URL建立URLRequest(网络请求) 默认为GET请求: 对于POST请求,需要创建请求的数据 ...
- 【iOS系列】-xib封装使用
[iOS系列]-xib封装使用 Xib文件可以用来描述某一块局部的UI界面 Xib文件的加载 修改xib文件的大小size(Freeform) 第一: NSArray *objs = [[NSBund ...
- 【iOS系列】- UITableView的使用技巧
[iOS系列]- UITableView的使用 UITableView的常用属性 indexpath.row:行 indexpath.section:组 separatorColor:分割线的颜色 s ...
- iOS系列教程 目录 (持续更新...)
前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...
- iOS系列 基础篇 04 探究视图生命周期
iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...
随机推荐
- thinkphp5实现文件上传
原理:通过form表单的enctype = "multipart / form-data"属性将文件临时放在htdocs文件夹的tmp目录下,再通过后台的程序将文件保存在自己设定的 ...
- 一篇文章掌握nightwatch自动化测试
nightwatch.js是一个web-ui自动化测试框架,被vue-cli深度整合进来.如果一个项目是基于vue-cli搭建的,基本可以做到开箱即用. 但是我们不可能一直都使用vue-cli.因为它 ...
- Java学习笔记(1)-(GridBagLayout)网格袋布局
学习JAVA-布局管理的时候,在书上看到了这么一段话:GridBagLayout的功能非常强大,使用是也比较复杂,考虑到一般的读者很少会使用到这种管理,这里不做介绍.然书本就跳过了,为什么功能强大却很 ...
- zoj 2807 Electrical Outlets
Electrical Outlets Time Limit: 2 Seconds Memory Limit: 65536 KB Roy has just moved into a new a ...
- rsync 同步文件重复拷贝问题
rsync 是同步文件的利器,一般用于多个机器之间的文件同步与备份,同时也支持在本地的不同目录之间互相同步文件.在这种场景下,rsync 远比 cp 命令更加合适,它只会同步需要更新的文件,默认情况下 ...
- [HNOI2012] 永无乡 题解
题意: n个点,有加边操作,询问与某一点处于相同的联通块的点中权值第k大的点 思路: 对所有点建立一棵权值线段树,加边就配合并查集进行线段树合并 反思: 动态开点,权值线段树要用sum[g[x=fin ...
- 【cmd】cmd常用命令
dir 是英文单词directory(目录)的缩写,主要用来显示一个目录下的文件和子目录 md 是英文make directory(创建目录)的缩写 cd 是英文change directory( ...
- noj 2033 一页书的书 [ dp + 组合数 ]
传送门 一页书的书 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 53 测试通过 : 1 ...
- loj6171/bzoj4899 记忆的轮廊(期望dp+优化)
题目: https://loj.ac/problem/6171 分析: 设dp[i][j]表示从第i个点出发(正确节点),还可以有j个存档点(在i点使用一个存档机会),走到终点n的期望步数 那么 a[ ...
- curl post请求方式
curl -l -H "application/x-www-form-urlencoded; charset=UTF-8" -X POST -d "query=SELEC ...