IOS数据存储之归档/解档】的更多相关文章

前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchiver).我们先来回顾一下JAVA是怎么实现保存一个自定义对象的!首先一个自定义对象必须实现Serializable接口,然后把一个对象序列化成二进制数据写入一个byte[]数据或者文件,反之则是从一个二进制数据或者文件中读取二进制数据反序列化成对象,所以我认为ios的归档解档其实就是类似JAVA序…
在构建应用程序时,有一个重要的问题是如何在每次启动之间持久化数据,以便重现最后一次关闭应用前的状态.在iOS和OS X上,苹果提供了三种选择:Core Data.属性列表(Property List)和带键值的编码(NSKeyedArchiver).当涉及到建模.查询.遍历.持久化等复杂的对象图时,Core Data无可替代.但并非所有应用程序都需要查询数据.处理复杂对象图,有时候使用NSKeyedArchiver更为简单. 1. 使用NSKeyedArchiver 如果要将各种类型的对象存储到…
#import <Foundation/Foundation.h> @interface Student : NSObject <NSCoding>; @property(nonatomic,strong)NSString* name; @property(nonatomic,assign)int age; @property(nonatomic,copy)NSString* tel; -(id)initWithName:(NSString*)name endAge:(int)ag…
归档:数据从内存与闪存相互转化,类似“序列化”,将数据转换成二进制字节数据 操作:有两种方式,第一种是单个对象作为root进行归档和恢复,一个对象一个文件:第二种,可以同时归档多个对象到一个文件 注意:归档自定义对象,需要实现NSCoding协议里的两个方法,举例说明:[preference]http://blog.csdn.net/mad1989/article/details/9106475 一.创建一个数据模型(自定义类) 现在就以大家常见的Student的为例,这个模型有5个参数:nam…
其中TRPerson为自定义的继承自NSObject的类的子类  其中有两个属性,name 和 age .h文件 #import @interface TRPerson : NSObject<</span>NSCoding> @property (nonatomic,strong)NSString *name; @property (nonatomic,strong)NSNumber * age; //初始化方法 - (id)initWithName:(NSString*)name…
1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra…
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中,我们需要数据持久化这一种技术,也需要不断在实际开发的工作与学习中完善数据持久化这一开发技术. [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     (本节2个项目demo的下载:属性列表Demo.对象的归档解档Demo) 本文…
iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码示例 YYViewController.m文件 // // YYViewController.m // 02-归档 /…
iOS数据存储之对象归档 对象归档 对象归档是iOS中数据持久化的一种方式. 归档是指另一种形式的序列化,但它是任何对象都可以实现的更常规的类型.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文件,然后再从中读取它们.对象归档后将得到一个后缀为.archive的文件 要使用对象归档,则归档的对象所属类中实现的每个属性都是标量,或者都是遵循NSCoding协议和NSCopying协议的某个类的实例,也就是说,在类的头文件中需要添加如下语句 可以编解码的条件是:对象要实现<>中的两个协议,也…
本文转发至:文顶顶http://www.cnblogs.com/wendingding/p/3775293.html iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码…
在之前转载的一片文章中,文中对浅复制和深复制进行了详细的解读,同时还提到了深复制(one-level-deep copy).完全复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值,本文将对这几个概念进行验证梳理. (单层和完全概念区分:例如多层数组只实现一层内容拷贝,其他层为指针拷贝成为单层深复制:若多层内容都实现拷贝称为完全复制) 程序中用到的几点概念补充 (1) 浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制. 深复制(one-l…
写于前: 在之前转载的一片文章中.文中对浅复制和深复制进行了具体的解读,同一时候还提到了深复制(one-level-deep copy).全然复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值,本文将对这几个概念进行验证梳理. (单层和全然概念区分:比如多层数组仅仅实现一层内容拷贝,其它层为指针拷贝成为单层深复制:若多层内容都实现拷贝称为全然赋值) 程序中用到的几点概念补充 (1) 浅复制(shallow copy):在浅复制操作时,对于被复制对象的每一层都是指针复制. 深…
目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Preference偏好设置 NSKeyedArchiver归档 / NSKeyedUnarchiver解档 SQLite3的使用 FMDB Core Data 下图是Core Data堆栈的图示,在这里是为了做文章的封面图片,后文会介绍Core Data的使用方法. Core Data 一.沙盒 iO…
A,归档解档(多针对于模型或者数组,利用MJExtension) 1,先在model里的.m文件写上MJCodingImplementation 2,再进行模型归档: #define APP_DOCUMENT                [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] #define DocumentPath(path)     …
iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起驻留在内存中,一旦程序运行结束从内存中退出后,这些数据也就相应消失了.等到再次运行程序的时候,之前的那些数据又要重新计算.但是对于一些应用,我们需要将程序产生的数据持久的保存起来,使得应用重启之后这些数据不会丢失,这时候就需要用到数据的持久化技术. 在iOS设备上实现数据持久化存储的方式有很多中机制…
iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 --  由编译器自动分配释放. 2堆 --  一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收. 3全局区(静态存储区)-- 全局变量和静态变量的存储是放在一块区域 ,程序退出后自动释放 .全局区又分为全局初始化区和全局未初始化区.初始化的全局变量和静态变量存放在全局初始化区,未初始化的全局变量和未初始化的静态变量存放在相邻的另一块区域. 4常量区-- 专门放数字/字符常量的地方, 程…
代码实现 遵守协议 class AccessToken: NSObject, NSCoding 实现协议方法 // MARK: - 归档&解档 required init(coder aDecoder: NSCoder) { access_token = aDecoder.decodeObjectForKey("access_token") as! String expires_in = aDecoder.decodeDoubleForKey("expires_in&…
这里的归档主要是用于自定义类的归档和解档.我们这里使用NSKeyedArchiver和NSKeyedUnarchiver来归档和解档. 注意:自己定义的类需要实现<NSCoding>,如:@interface User : NSObject <NSCoding>,并实现Coding中相应的方法. /*************************************User.h*************************************/ // // User.…
什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储. 归档的作用 之前将数据存储到本地,只能是字符串.数组.字典.NSNuber.BOOL等容器类对象,不能将自定义对象进行保存,而通过归档能将所有的对象转化为二进制数据存储到文件中. 归档的缺点 归档保存数据,只能一次性归档保存以及一次性解压.所以只能针对小量数据,而且对数据操作比较笨拙,即如果想改动数据的某一小部分,还是需要解压整个数据或者归档整个数据.…
FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语言API,使用起来更加的方便,不需要过多的关心数据库操作的知识.但是它本身也存在一些问题,比如跨平台,因为它是用oc的语言封装的,所以只能在ios开发的时候使用,如果想实现跨平台的操作,来降低开发的成本和维护的成本,就需要使用比较原始的SQLite. Core Data是ORM的一种体现,使用Core Data需要用到模型数据的转化,虽…
一.简单说明  1.在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦.  2.偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息).  3.归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存储放在文件中. 1.代码示例   DBPerson.h文件 //如果想将一个自定义对象保存到文件中必须实现NSCoding协议 @interface DBPerson : NSObject <NSCo…
一.归档介绍 1.归档是指用某种格式来保存一个或多个对象,以便以后还原这些对象的过程.归档是将数据持久化的一种方式(所谓数据持久化,就是指在IOS开发过程中,将数据保存到本地,能够让程序的运行更加流畅). 2.想要归档的数据对象,需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法. 3.归档就是将临时数据保存成本地文件. 4.归档的缺点:归档的形式来保存数据,只能一次性归档保存以及一次性解压.所以只能针对小量数据,而且对数据…
前言: 之前学习了数据存储的NSUserDefaults,归档和解档,沙盒文件存储,但是对于数据量比较大,需要频繁查询,删除,更新等操作的时候无论从效率上还是性能上,上述三种明显不能满足我们的日常开发需要了.这个时候我们必须借助数据库,做为Android开发的都知道采用的是一种轻量级数据库Sqlite.其实它广泛用于包括浏览器.IOS,Android以及一些便携需求的小型web应用系统.它具备占用资源低,处理速度快等优点.接下来我们具体认识一下. 我们在项目开发中需要引入libsqlite3.d…
前言: 之前学习了数据存储的NSUserDefaults,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. 接下来具体认识一下沙盒存储: 每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用的文件系统隔离,ios系统不允许访问其他应用的应用沙盒.在ios8中已经开放访问. 应用沙盒一般包括以下几个文件目录:应用程序包.Documents.Libaray(下面有Caches和Prefer…
IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS…
[reference]http://www.infoq.com/cn/articles/data-storage-in-ios 谈到数据储存,首先要明确区分两个概念,数据结构和储存方式.所谓数据结构就是数据存在的形式.除了基本的NSDictionary.NSArray和NSSet这些对象,还有更复杂的如:关系模型.对象图和属性列表多种结构.而存储方式则简单的分为两种:内存与闪存.内存存储是临时的,运行时有效的,但效率高,而闪存则是一种持久化存储,但产生I/O消耗,效率相对低.把内存数据转移到闪存…
IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver. 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象. 归档方式: 对Foundation框架中对象进行归档 对自定义的内容进行归档…
iOS中数据存储方式 一般使用以下4种:(已更新) .NSKeyedAchiever//序列化 存放对象 .NSUserDefaults//本质是plist存储 NSData.NSString.NSNumber.NSDate.NSArray.NSDictionary //存储到沙盒下的Library/Preferences/ .writeToFile:atomically://直接写文件方式:NSString.NSArray.NSDictionary.NSData.NSNumber,存放在一个属…
2017.11.20 14:41* 字数 227 阅读 678评论 0喜欢 0 钥匙串介绍   1. 表示设备唯一号的标识,在IOS7中要么被禁止使用,要么重新安装程序后两次获取的标识符不一样. 2. 由于IOS系统存储的数据都是在sandBox里面,一旦删除App,sandBox也不复存在.好在有一个例外,那就是keychain(钥匙串). 3. 通常情况下,IOS系统用NSUserDefaults存储数据信息,但是对于一些私密信息,比如密码.证书等等,就需要使用更为安全的keychain了.…
归档和解档:即将数据写入文件和从文件中读取数据. 此处以plist文件为例说明, 一.plist文件使用时的注意事项: 1.plist文件中仅支持写入Array,Dictionary,Boolean,Data,Date,Number,String类型. 2.如果想要将自定义类的对象数据写入plist文件,则需要将对象修改为NSData类型写入. 二.归档步骤: 1.自定义的类必须遵守NSCoding协议,重写其归档和解档的方法.- (void)encodeWithCoder:(NSCoder *…