第一: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系列】-数据储存的更多相关文章

  1. 【iOS系列】-UINavigationController的使用(Segue传递数据)

    [iOS系列]-UINavigationController的使用 UINavigationController是以以栈(先进后出)的形式保存子控制器, 常用属性: UINavigationItem有 ...

  2. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  3. iOS系列 基础篇 09 开关、滑块和分段控件

    iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...

  4. iOS - JSON 数据解析

     iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...

  5. 面试题汇总--数据储存/应用程序/UI控件/客户端的安全性与框架处理。。。

    一 数据储存  1.如果后期需要增加数据库中的字段怎么实现,如果不使用 CoreData 呢?编写 SQL 语句来操作原来表中的字段1)增加表字段ALTER TABLE 表名 ADD COLUMN 字 ...

  6. 【iOS系列】-iOS开发,GET,POST请求使用

    [iOS系列]-iOS开发,GET,POST请求使用 步骤: 1:实例化URL(网络资源) 2:根据URL建立URLRequest(网络请求) 默认为GET请求: 对于POST请求,需要创建请求的数据 ...

  7. 【iOS系列】-xib封装使用

    [iOS系列]-xib封装使用 Xib文件可以用来描述某一块局部的UI界面 Xib文件的加载 修改xib文件的大小size(Freeform) 第一: NSArray *objs = [[NSBund ...

  8. 【iOS系列】- UITableView的使用技巧

    [iOS系列]- UITableView的使用 UITableView的常用属性 indexpath.row:行 indexpath.section:组 separatorColor:分割线的颜色 s ...

  9. iOS系列教程 目录 (持续更新...)

      前言: 听说搞iOS的都是高富帅,身边妹子无数.咱也来玩玩.哈哈. 本篇所有内容使用的是XCode工具.Swift语言进行开发. 我现在也是学习阶段,每一篇内容都是经过自己实际编写完一遍之后,发现 ...

  10. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

随机推荐

  1. Linux vim指令学习

    每天查看一遍vim文档 Linux系统下命令:$ vimtutor 1.可视模式([v] 或者 [Ctrl + v])下的[U]把选中的文本变为大写 .[u]把选中的文本变为小写. 2.[数字] + ...

  2. 特殊权限和facl

    目 录 第1章 FACL访问控制    1 1.1 FACL简介    1 1.2 getfacl命令查看acl权限    1 1.3 setfacl设置文件的cal权限    1 1.4 批量添加a ...

  3. solr 时区问题

    本人使用solr版本5.0.0,使用jetty启动 solr默认UTC时区,与我们相差八小时,按照网络上资料修改 C:\Users\hp\Desktop\solr-5.0.0\bin 下的solr.i ...

  4. 在Ubuntu 16.04 LTS上用g++和gcc编译C/C++代码错误提示“.../x86_64-linux-gnu/crt1.o: ELF section name out of range”

    (有一些图片我是直接从个人的CSDN博客上复制来的) 最近一个多月来,我曾经多次尝试在Ubuntu 16.04 LTS上使用g++和gcc(这俩好像合起来叫MinGW?)来编译C/C++代码,但是在解 ...

  5. 关于hibernate中的 lazy="false“

    如上图所示,warehousePicked 中包含了warehousePicking 同时,数据库中warehousePicking存在数据 ,但是在debug 时warehousePicked的be ...

  6. .NET Core 文件的上传与下载

    1.前言 文件导入导出是简单且常用的功能,以下示例实现了文件上传与下载的几种方法,如有不妥的地方,欢迎指正.小白一枚,在往目标前进. 2.1.文件上传    --    纯文件 <form ac ...

  7. LaTeX模板

    学校linux机子根本跑不动libreoffice,wps没有公式,只好上LaTeX了. 先 beamer: 需要安装firasans和firamono字体,思源黑体SC \documentclass ...

  8. intellij idea2016

    注册server http://idea.imsxm.com

  9. [转]使用fdisk磁盘分区和 Linux 文件系统

    概述 在本文中,学习磁盘分区和 Linux 文件系统相关内容.学习: 创建分区 使用 mkfs 命令来设置 ext2.ext3.ext4.xfs.Reiser v3 和 vfat 文件系统 创建和管理 ...

  10. SHELL脚本运行的几种方法以及区别

    #1 给脚本加上执行权限chmod u+x a.sh, 而后就可以直接用全路径来执行脚本了,比如当前文件夹下用./a.sh,如果如果脚本所在目录在PATH环境变量之中, 则直接用a.sh即可(这和运行 ...