NSKeyedArchiver】的更多相关文章

========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 // 第一种写法 // 对象--文件 NSArray* array = [[NSArray alloc]initWithObjects:@"zhang", @"wang", @"li", nil]; NSString* filePath = [NS…
========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.char.double等这种都是基础数据类型. [注]继承自C语言的基础变量类型(int,float,char.double等)不能被添加到数组和字典等oc专有的数据结构中.使用不方便,也不能通过添加类别等oc专有语法进行管理. [另]可以认为,NSNumber是基础类型数据转成对象类型数据的一个类.…
基本的数据类型如NSString.NSDictionary.NSArray.NSData.NSNumber等可以用属性列表的方法持久化到.plist 文件中,但如果是一些自定义的类的话,属性列表的方法就不管用了.archiver 方法可以做到. 编码如下: 首先新建一个person类,定义它的三个属性,如下: [cpp] view plaincopyprint? // // person.h // 数据持久化之archiver // // Created by Rio.King on 13-9-…
数据持久化:  将内存中的数据按某种格式存进磁盘 数据的种类: 1,结构化的数据 2, 字节流数据 结构化的数据        字节流 内存中结构化的数据   ->   磁盘,  叫: 归档 字节流               结构化 磁盘上的数据        ->  结构化到内存中, 叫:  反归档 字节流              字节流 内存中字节流的数据   ->   磁盘,  叫: 写文件 字节流              字节流 磁盘上的数据        ->  …
iOS应用数据存储的常用方式(持久化方式) 属性列表(plist)归档(XML文件) Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3 Core Data 属性列表(plist)归档(XML文件) 属性列表是一种XML格式的文件,拓展名为plist. 如果对象是NSString.NSDictionary.NSArray.NSData.NSNumber等类型,就可以使用writeToFile:atomically:方法直接将对象写到属性列表文…
将各种类型的对象存储到文件中,而不仅仅是字符串.数组和字典类型,有一种更灵活的方法.就是利用NSKeyedAarchiver类创建带键(keyed)的档案来完成. Mac OS X从版本10.2开始支持带键的档案.在此之前,要使用NSArchiver类创建连续的(sequential)归档.连续的归档需要完全按照写入时的顺序读取归档中的数据. 在带键的归档中,每个归档字段都有一个名称.归档某个对象时,会为它提供一个名称,即键.从归档中检索该对象时,是根据这个键来检索的.这样可以按照任意的顺序将对…
结论:NSKeyedArchiver 以健值对+类名的形式保存数据: NSDictionary *tDic = @{@"kxxxx":@"hhhh",@"kyyyy":@"pppp",@"keeeek":@"oooo"}; NSMutableData *data = [[NSMutableData alloc] init]; NSKeyedArchiver *archiver = [[N…
前言 @interface NSKeyedArchiver : NSCoder @interface NSKeyedUnarchiver : NSCoder 在 OC 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象.通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象.可以使用归档的方法进行对象的深复制. 采用归档的形式来保存数据,该数据对象需要遵守 NSCoding 协议,并且该对象对应的类必须提供 encodeWithCoder: 和 initWit…
前言 public class NSKeyedArchiver : NSCoder public class NSKeyedUnarchiver : NSCoder 在 OC 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象.通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象.可以使用归档的方法进行对象的深复制. 采用归档的形式来保存数据,该数据对象需要遵守 NSCoding 协议,并且该对象对应的类必须提供 encodeWithCoder: 和 ini…
IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS…
复杂对象无法象 NSString,NSArray等简单对象一样直接通过 writeToFile 实现持久化,当对复杂对象进行持久化时需要将其转化为 NSData (归档),但获取数据时,将 NSData 转化为复杂对象 (反归档) 下面通过一个简单的 Person 类实现归档和反归档: 1.新建 Peoson 类,有两个属性 name,age,其需要遵守 <NSCoding> 协议,实现- (void)encodeWithCoder: 和 - (instancetype)initWithCod…
ios中数据持久化存储方式一般有5种:NSUserDefault.对象归档(NSKeyedArchiver).文件操作.数据库存储(SQLite3).CoreData. 1.NSUserDefault用于保存程序相关的偏好设置和配置数据等,以便下次启动程序后能恢复上次的设置. NSUserDefault和对象归档 //通过单利来创建一个NSUserDefaults对象,全局变量NSUserDefault,可在整个项目传递变量 let userDefault:NSUserDefaults = NS…
数据的存储-NSKeyedArchiver和write to file介绍 首先介绍各个文件的作用-->讲解文件位置的查找方法-->介绍数据存储的方式:1.使用归档方式存储数据 2.writetofile写入方法 iphone沙盒下的目录中存放的是什么信息? 有ios程序显示的路径,我们将找到ios的沙盒位置,里面存在一下三个目录 Documents:将所有的应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其他应该定期备份的信息. Library:这个目录下面有两个子目录,Cach…
废话不说,直接上代码 // // CommunityTool.h // SmartCommunity // // Created by chenhuan on 15/9/2. // Copyright (c) 2015年 smartcommunity. All rights reserved. // #import <Foundation/Foundation.h> @interface CommunityTool : NSObject + (void)SaveComunity:(NSArra…
[day05_1_UserDefault]:判断应用程序是否是第一次运行 NSUserDefaults:用来保存应用程序的配置信息如:程序运行次数,用户登陆信息等. // 使用系统提供的NSUserDefaults对象判断 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; int runCount = [[userDefaults objectForKey:@"runCount"] intValu…
NSKeyedUnarchiver : 从二进制流读取对象; NSKeyedArchiver :把对象写到二进制流中去. 要实现对数据模型的归档,需要我们实现NScoding协议,(NScoping)(copy协议是为了模型数据可以复制,对于归档而言,不是必须要实现): NScoder 和 NScoding:NScoding 是一个协议,而NSCoder 是一个抽象类,抽象类不能被实例话,只能提供一些想让子类继承的方法 NScoding协议需要实现两个方法: -(void)encodeWithC…
1.概述 NSKeyedArchiver归档和plist文件存储不同的是NSKeyedArchiver可以直接保存对象.如果对象是NSString.NSDictionary.NSArray.NSData.NSNumber等类型,可以直接用NSKeyedArchiver进行归档和恢复.不是所有的对象都可以直接用这种方法进行归档,只有遵守了NSCoding协议的对象才可以被存储. NSCoding协议中的2个方法: (1)encodeWithCoder: 存对象时该方法必须实现,每次归档对象时,都会…
IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver. 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象. 归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档…
归档的使用,是归于使用保存数据,但是一些简单的数据,如数组,字典等基本的数据类型,往往不使用在归档中,归档和plist以及UserDefaults最大的区别就在于,前者可以存放自定义的数据类型,而后两者只能存放基本的数据类型. 本文只对归档(自定义的类型)进行概述. 在归档的使用中,存放和读取和plist文件读取相似,都是对沙盒目录进行读取和存放,此处省略,读取和存放 在自定义的类中要遵循NSCoder协议,协议中有两个代理方法,分别为: -(void)encodeWithCoder:(NSCo…
[应用背景] 在数据库中存储数据时,如果对象过于复杂,又不必要创建复杂的表,可以直接把整个对象转化为二进制存入数据库字段,然后取出后再还原即可. [实现方法] 在PHP中,使用序列化和反序列化可以实现这样的功能. 在OC中,使用NSKeyedArchiver和NSKedUnarchiver可以实现对象转二进制和二进制转对象,要实现转化,必须遵循NSCoding协议,并且实现encodeWithCoder方法用来转化数据为二进制,实现initWithCoder实现二进制数据还原成类对象,OC的常见…
NSKeyedArchiver在linux的实现默认的格式是二进制: NSArray *ary = @[@"hello",@"world",@"!!!",@11]; [NSKeyedArchiver archiveRootObject:ary toFile:@"./foo.dat"]; 我们还可以选择XML格式: NSMutableData *data = [NSMutableData data]; NSKeyedArchiv…
ios中常用文件存取的方法有: 1.直接写文件的方式,可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据全部存放在一个属性列表文件(*.plist文件)中. 2.NSUeserDefaults(偏好设置),用来存储应用设置信息,文件放在perference目录下. 3.归档操作(NSkeyedArchiver),不同于前面两种,它可以把自定义对象存放在文件中. 首先每个开发者都应该知道,对于一个应用来说,有唯一的沙盒与之对应,即每个应…
NSKeyedArchiver对象归档 首先要实现<NScoding>里面的两个代理方法initWithCoder,encodeWithCoder @property (nonatomic, copy) NSString *keyName; /* 将某个对象写入文件时候会调用 在这个方法中说清楚哪些属性需要存储 */ - (void)encodeWithCoder:(NSCoder *)encoder{ [encoder encodeObject:self.keyName forKey:@&q…
到目前为止,看到oc实现的序列化方式有两种:NSKeyedArchiver,NSPropertyListSerialization. 在这两种序列化方式中,NSData都是序列化的目标.两种方式的不同点在于NSPropertyListSerialization只是针对字典类型的,而NSKeyedArchiver是针对对象的.(补充一下,在Mac OS环境下,还可以使用NSArchiver获得更加精简的二进制序列化内容,但是NSArchiver在iOS环境下不支持). 首先讲NSPropertyL…
iOS应用数据存储的常用方式: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3--这里暂且不讲 Core Data--这里暂且不讲 一.应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示 二.应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Do…
在构建应用程序时,有一个重要的问题是如何在每次启动之间持久化数据,以便重现最后一次关闭应用前的状态.在iOS和OS X上,苹果提供了三种选择:Core Data.属性列表(Property List)和带键值的编码(NSKeyedArchiver).当涉及到建模.查询.遍历.持久化等复杂的对象图时,Core Data无可替代.但并非所有应用程序都需要查询数据.处理复杂对象图,有时候使用NSKeyedArchiver更为简单. 1. 使用NSKeyedArchiver 如果要将各种类型的对象存储到…
iOS提供了几种数据持久化保存的方法,有NSKeyedArchiver,Property List,NSUserDefaults和CoreData.我学习下来,觉得保存应用内的诸如列表,记录这些东西,用NSKeyedArchiver是比较合适的. 它有些类似于操作系统中将文件压缩存放,而它是将对象压缩成一个文件存放在iOS设备的硬盘中.这样的话即使将应用关闭,下次开启时也能使用方法从硬盘将数据解压缩出来,供用户继续操作这些数据. 让对象可被NSKeyedArchiver存储 如果想要使用NSKe…
//2.文件读写 //支持:NSString, NSArray , NSDictionay, NSData //注:集合(NSArray, NSDictionay)中得元素也必须是这四种类型, 才能够进行文件读写 //string文件读写 NSString *string = @"假如给我有索纳塔"; //Document NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUs…
前言 在 OC 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象. 通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象.可以使用归档的方法进行对象的深复制. 采用归档的形式来保存数据,该数据对象需要遵守 NSCoding 协议,并且该对象对应的类必须提供 encodeWithCoder: 和 initWithCoder: 方法. 前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码. 缺点:归档的形式来保存数据,只能一次性归档…
1.什么是持久化? 本人找了好多文章都没有找到满意的答案,最后是从孙卫琴写的<精通Hibernate:Java对象持久化技术详解>中,看到如下的解释,感觉还是比较完整的.摘抄如下: 狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中:广义的理解,“持久化”包括和数据库相关的各种操作. ● 保存:把域对象永久保存到数据库. ● 更新:更新数据库中域对象的状态. ● 删除:从数据库中删除一个域对象. ● 加载:根据特定的OID,把一个域对象从数据库加载到内存. ● 查询:根据特定的查询条件,…