Object-c 数据存储知识大聚会

通常程序在运行中或者程序结束之后,需要保存一些信息,而且需要持久化存储信息,比如登陆信息、视频播放记录、收藏记录等等,那么我们可以采用以下几种方式对数据进行持久化保存.

1.文件

2.plist

3.归档

4.NSUserDefaults

5.数据库

【Plist】(文件的一种)

<1> 什么是plist文件, plist文件的作用

1.plist文件:property list  属性列表文件,文件的内容只能是 NSString NSNumber NSDate NSData NSArray NSDictionary类的对象内容不能保存其他类型数据

2.作用:对一些登陆注册信息或者程序的配置信息(小数据)进行持久化存储

<2> 如何创建plist文件, 如何编辑plist文件

Plist文件内容的格式是XML语法格式

1.Xcode创建

1.点击File--》New File 弹出一对话框

2.iOS程序选中iOS栏中的Resource/Mac程序选中OS X 栏中的resource

3.点击Resource中的Property List 创建plist文件

4.点击文件中的‘+‘可以添加数据

2.代码创建

如果要把 NSString NSNumber NSDate NSData NSArray NSDictionary 的对象写入文件一般就用plist文件

我们需要这些数据保存到一个数组或者字典中,然后调用数组和字典的相关函数把数组NSArray或者字典NSDictionary写入plist文件

//NSArray和NSDictionary写文件方法

//YES是保证文件的写入原子性,就是说会先创建一个临时文件,直到文件内容写入成功再导入到目标文件里.NO是直接写入

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

<3> 如何在程序中读取plist文件数据

Plist文件的根节点(数据的最外层)通常是数组或者字典,(字典居多)

如果Plist文件的根节点是字典那么使用字典的类方法+ (id)dictionaryWithContentsOfFile:(NSString
*)path;读写Plist文件

如果根节点是数组那么使用数组的类方法+ (id)arrayWithContentsOfFile:(NSString
*)path;读取Plist文件

注:上述两个方法只能读取Plist文件,不能读取其他格式的文件。

【归档】

<1>什么是归档和解档

1.归档(也称对象序列化)就是通过某种格式把对象保存到本地文件,以便以后读回该对象的内容

2.解档(也称读档)就是把归档的对象文件读成原来的对象的过程。

<2>如何归档和解档

1.系统类的归档和解档

// 序列化 数组归档

NSArray *array =
@[@"xiaohong",@"iOS”,@“123”];

NSString *path = @"/Users/apple/Desktop/data.archive";

BOOL sucess = [NSKeyedArchiver
archiveRootObject:array
toFile:path];

if (sucess)

{

NSLog(@"归档成功");

}else{

NSLog(@"归档失败");

}

// 反序列化
解档

NSArray *newArray = [NSKeyedUnarchiver
unarchiveObjectWithFile:path];

NSLog(@"%@", newArray);

注:1.NSDictionary也可以直接进行归档和解档

2.归档的对象包括这个对象中的属性,它们所属类的都必须要遵守NSCoding 协议才能归档和解档

2.自定义类的归档和解档

如果自定义的类对象要进行归档那么这个对象的属性所属的类也必须要遵守归档协议NSCoding

必须实现以下两个方法:

//归档的时候调用的方法

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder
encodeInt:self.age
forKey:@”age“];

[aCoder encodeObject:self.name
forKey:@“name”];

}

//解归档的时候要调用的函数

- (id)initWithCoder:(NSCoder *)aDecoder

{

if (self = [super
init]) {//如果父类也遵守归档协议那么这里要调用 [super initWithCoder:];

self.age = [aDecoder
decodeIntForKey:@“age”];

self.name = [aDecoder
decodeObjectForKey:@“name”];

}

return self;

}

归档时不一定要直接归档到文件,还可以先将他们归档成NSData,然后将NSdata进行存储,用的时候就用这个NSData解档

NSKeyedArchiver的类方法      
+ (NSData *)archivedDataWithRootObject:(id)rootObject;

NSKeyedUnarchiver的类方法 
+ (id)unarchiveObjectWithData:(NSData *)data;

【NSUserDefaults】是一个轻量级的负责本地存储的单例字典

NSArray *arr = [NSArray
arrayWithObjects:@"aa",@"bb",
nil];

//一个NSUserDefaults的单例对象(可变字典)

NSUserDefaults *ud = [NSUserDefaults
standardUserDefaults];

//设置内容

[ud
setObject:arr forKey:@"a"];

//同步

[ud
synchronize];

//读取内容

NSArray *aaa = [ud
objectForKey:@"a"];

【JSON】

<1>.什么是JSON

JSON是一种轻量级的数据交换格式

JSON 数据的书写格式是:名称:值 构成键值对。类似于OC的字典中的键值对

<2>JSON的基本语法

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值。如 "firstName":"tom"

JSON的值可以是:

1.数字(整数或浮点数)

2.字符串(在双引号中)

3.逻辑值(true 或 false)

4.数组(在方括号中)

5.对象(在花括号中)

6.null

<3>JSON结构

JSON有数组和字典两种结构通过这两种结构可以表示各种复杂的结构

1.数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",…],类似于OC中的数组

2.对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,类似于OC中的字典结构

<4>JSON解析

假如本地有一文件内容格式是JSON格式。

1.首先调用+ (id)stringWithContentsOfFile:(NSString
*)path encoding:(NSStringEncoding)enc error:(NSError **)error;把文件读成字符串.

2.然后把字符串转化为NSData 二进制数据

3.调用  系统类NSJSONSerialization的  + (id)JSONObjectWithData:(NSData
*)data options:(NSJSONReadingOptions)opt error:(NSError **)error;  方法进行解析,最后解析为NSArray 或者NSDictionary

注:JSON数据的最外层通常是字典或者数组,字典结构居多。使用NSJSONSerialization解析json 数据,解析出来是OC中NSArray 或者NSDictionary

Object-c 数据存储知识大聚会,布布扣,bubuko.com

时间: 2024-10-12 22:54:23

Object-c 数据存储知识大聚会的相关文章

Atitit 研发体系建立 数据存储与数据知识点体系知识图谱attilax 总结

分类具体知识点原理规范具体实现(oracle,mysql,mssql是否可以自己实现说明 数据库理论数据库的类型 数据库理论,网状,层次, 数据库理论树形数据库注册表,hashtable 数据库理论,kv数据库.hashtable 数据库理论Oodb 数据库理论nosql db 数据库理论隔离级别 数据库理论 数据库理论Er模型 数据库理论Acid数据库完整性 数据库理论关系模型 数据库理论   sql 数据库理论 数据库理论存储过程 数据库理论 触发器 数据库理论 视图 约束 数据库理论 数据

大数据存储的秘密之分区

分区,又称为分片,是解决大数据存储的常见解决方案,大数据存储量超过了单节点的存储上限,因此需要进行分区操作将数据分散存储在不同节点上,通常每个单个分区可以理解成一个小型的数据库,尽管数据库能同时支持多个分区操作:分区引入多分区概念,可以同时对外服务提高性能. 常常和分区一并提及的概念是复制,分区通常与复制结合使?,使得每个分区的副本存储在多个节点上. 这意味着,即使每条记录属于?个分区,它仍然可以存储在多个不同的节点上以获得容错能?.分区在许多技术或框架中都有体现,例如MQ中topic下的分区消

在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析

在HDInsight中从Hadoop的兼容BLOB存储查询大数据的分析 低成本的Blob存储是一个强大的,通用的Hadoop兼容Azure存储解决方案无缝集成HDInsight.通过Hadoop分布式文件系统(HDFS)接口,完整的组件集合在HDInsight可以 在Blob存储数据的直接操作.在本教程中,学习如何建立一个容器的Blob存储,然后在里面处理的数据. 在BLOB存储中存储的数据能够用于计算的HDInsight集群被安全地删除,而不会丢失用户数据. 注意: 该ASV://语法中不支持

大数据存储的一些概念性问题

其实对一些基本的概念都没有弄清楚,这里从网上找一些来普及下 一.结构化数据与非结构化数据 结构化数据就是能变成二维的行数据,主要应用在关系型数据库中. 非结构化数据是不可以变的,例如视频,音频文件,没有办法变成二维的行数据.所以一般不能用简单的关系型数据库存储,所以就引入了别的存储方式. 相对于结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)而言,不方便用数据库二维逻辑表来表现的数据即称为非结构化数据,包括所有格式的办公文档.文本.图片.XML.HTML.各类报表.图

大数据存储到底出了什么问题

当大数据现象在三年前刚刚兴起时,其对于存储企业而言,机房环境监控系统就如同久旱逢甘霖一样,许多存储厂商纷纷积极的投入该领域,并开启最大分贝的营销扬声器鼓吹大数据存储. 然而到了今天,存储行业的现实状况并不乐观. 一方面,大数据发展的潮流不断地全速前进.尽管企业对于大数据的Volume(大批量).Velocity(高速传递).Variety(多样性)等 特征一直保持着高度的兴致,但企业对于大数据技术的采用率仍然很低,主要仍集中在实验阶段.同时,一些大数据初创企业继续吸引着大量的资金,并认为这些大

打造大数据存储解决方案,铁威马西部数据渠道交流会在深举行

12月28日,"铁威马西部数据渠道交流会"在深圳中航格兰云天大酒店顺利举行,本次交流会向大家介绍了铁威马和西部数据的多款产品,反响热烈.现场50多位渠道代理经销商参加,共同交流学习铁威马NAS和西部数据红盘产品.?铁威马作为国际知名存储品牌,在本次交流会重点展示雷电3系列产品和NAS网络存储,还有全新推出的TOS 4.0系统,交流会期间除了有西部数据红盘外,还有铁雷电3产品和NAS网络存储服务器供大家参观演示.交流会上铁威马国内总监张志华致辞.铁威马产品经理给大家介绍铁威马雷电3系列产

2019年,该怎样去系统学习大数据,知识+内容+教程

大数据作为2019年比较热门的技术,受到越来越多的关注,那么对于一个想进入大数据的朋友来说,最想知道的是:大数据学什么?今天科多大数据就和你们一起来分享一篇关于大数据学习内容体系介绍的文章. 大数据技术体系太庞杂了,基础技术覆盖数据采集.数据预处理.分布式存储.NOSQL数据库.多模式计算(批处理.在线处理.实时流处理.内存处理).多模态计算(图像.文本.视频.音频).数据仓库.数据挖掘.机器学习.人工智能.深度学习.并行计算.可视化等各种技术范畴和不同的层面.另外大数据应用领域广泛,各领域采用

“大数据“基础知识普及

大数据,官方定义是指那些数据量特别大.数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理.大数据的主要特点为数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity),合起来被称为4V. 大数据中的数据量非常巨大,达到了PB级别.而且这庞大的数据之中,不仅仅包括结构化数据(如数字.符号等数据),还包括非结构化数据(如文本.图像.声音.视频等数据).这使得大数据的存储,管理和处理很难利用传统的关系型数据库去

知识总结之几种数据存储的区别及用法

在H5到来之前,数据存储的方式大多使用cookie,但由于其体积太小以及请求时地址栏显示数据等缺点,便有了H5中的localStorage,可以存储较大数据,且不会自动发送到后台.这里主要介绍总结集中web前端数据存储的几种方法及区别.   1.cookie 存储数据较小,大小4K之内: 请求时地址栏带数据,存储在客户端(电脑浏览器中): 不易存储内容过多,会严重占用服务器端带宽,影响性能: 对于IE浏览器有UserData,大小是64k,只有IE浏览器支持. 2.本地存储localStorag