/****普通对象归档**/

NSString *homePath=NSHomeDirectory();

NSString *fileName=@"test.vse";

NSString *path=[homePath stringByAppendingPathComponent:fileName];

NSArray *array=@[@"abc",@"sea",@123];

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

if (success) {

NSLog(@"success");

}

/**普通对象解归档***/

NSArray *newArray=[NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSLog(@"%@",newArray);

/***第二种普通对象归档方式***/

NSString *homePath2=NSHomeDirectory();

NSString *fileName2=@"test2.vse";

NSString *path2=[homePath2 stringByAppendingPathComponent:fileName2];

NSMutableData *data=[NSMutableData data];

NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];

NSArray *array2=@[@"abc222",@"se22a",@1233];

[archiver encodeInt:100 forKey:@"age"];

[archiver encodeObject:array2 forKey:@"name"];

[archiver finishEncoding];

BOOL success2=[data writeToFile:path2  atomically:YES];

if (success2) {

NSLog(@"success");

}

/***第二种普通对象解归档方式***/

NSData *data2=[NSData dataWithContentsOfFile:path2];

NSKeyedUnarchiver *unAchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:data2];

int age=[unAchiver decodeIntForKey:@"age"];

NSArray *name=[unAchiver decodeObjectForKey:@"name"];

NSLog(@"age=%d,name=%@",age,name);

//自定义对象归档

#import <Foundation/Foundation.h>

@interface User : NSObject <NSCoding>

@property (nonatomic,copy) NSString *name;

@property (nonatomic,copy) NSString *email;

@property (nonatomic,copy) NSString *password;

@property (nonatomic,assign) int age;

@end

------------------------------

#import "User.h"

#define AGE @"age"

#define NAME @"name"

#define EMAIL @"email"

#define PASSWORD @"password"

@implementation User:NSObject

//对属性编码,归档时调用

- (void)encodeWithCoder:(NSCoder *)aCoder{

[aCoder encodeInt:_age forKey:AGE];

[aCoder encodeObject:_name  forKey:NAME];

[aCoder encodeObject:_email forKey:EMAIL];

[aCoder encodeObject:_password forKey:PASSWORD];

}

//对属性解码,解归档时调用

- (id)initWithCoder:(NSCoder *)aDecoder{

self=[super init];

if (self!=nil) {

_age=[aDecoder decodeIntForKey:AGE];

_name=[aDecoder decodeObjectForKey:NAME];

_email=[aDecoder decodeObjectForKey:EMAIL];

_password=[aDecoder decodeObjectForKey:PASSWORD];

}

return self;

}

//重写description

-(NSString *) description{

NSString *str=[NSString stringWithFormat:@"age=%d,name=%@,email=%@,password=%@",_age,_name,_email,_password];

return str;

}

@end

----------------使用---------------------

/***第三种自定义对象归档方式***/

User *user=[[User alloc] init];

user.name=@"caicai";

user.age=22;

user.email=@"adf@s.com";

user.password=@"skjdsfsd";

NSString *path3=[NSHomeDirectory() stringByAppendingPathComponent:@"user.hs"];

BOOL success3=[NSKeyedArchiver archiveRootObject:user toFile:path3];

if (success3) {

NSLog(@"success");

}

/***自定义对象解归档方式***/

User *user2=[NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSLog(@"%@",user2);

归档-ios的更多相关文章

  1. iOS数据持久化-OC

    沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...

  2. iOS数据存储之属性列表理解

    iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...

  3. iOS开发数据库-FMDB

    前言 FMDB是以OC的方式封装了SQLite的C语言API,使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码:对比苹果自带的Core Data框架,更加轻量级和灵活:提供了多线程安全的数据库操 ...

  4. iOS攻城狮修炼之路

    自己总结的学习iOS的笔记,打造一个全面的知识体系,iOS攻城狮修炼之路[持续更新中] iOS学习笔记01-APP相关 iOS学习笔记02-UIScrollView iOS学习笔记03-UITable ...

  5. iOS--开发从入门到精通

    前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...

  6. IOS数据存储之归档/解档

    前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchi ...

  7. Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG...

    前言: 小弟是做JAVA/Android的第一次搞这个ios,公司有mobile项目是使用phoneGap开发的,需要开发ios版本.什么都不会只能一点一点琢磨了……大神越过…… 原文链接:http: ...

  8. iOS阶段学习第18天笔记(Plist-Archiver-归档与解归档操作)

    iOS学习(OC语言)知识点整理 一.归档与解归档的操作 1)归档是一个过程,将一个或多个对象存储起来,以便以后可以还原,包括将对象存入文件,以后再读取 将数据对象归档成plist文件 2)plist ...

  9. iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

    1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...

随机推荐

  1. Ubuntu 14.10 下Server版本中文乱码问题

    在安装Ubuntu server 14.10 时候选择了中文版,但是装好系统发现,里面的中文有乱码,解决办法 打开 /etc/default/locale sudo nano /etc/default ...

  2. 重拾java系列一java基础(1)

    前言,不知不觉,从接触java到工作至今已有两年的时间,突然感觉自己的基础知识还很薄弱,有些知识虽然知道,但是停留在表面上,没有深挖,或者实践过,感觉掌握的很肤浅,而且时间一长,就觉得忘记了,我觉得这 ...

  3. cometd的js端代码

    一:js端使用方式 CometD JavaScript的配置.整个API可以通过一个单一的原型名为org.cometd.Cometd的对象来调用.Dojo工具包中有一个名称为dojox.cometd的 ...

  4. eclipse安装hibernate

  5. javaweb-dbutils

    package cn.itcast.demo; import java.io.File;import java.io.FileNotFoundException;import java.io.File ...

  6. Linux---- vim 插件

    http://hi.baidu.com/omnice/blog/item/4ba97317cc67cc10962b4378.html fuzzyfinder.vim 可以替代四个插件, 不过这个插件也 ...

  7. JQuery源码分析(二)

    立即调用表达式: 任何库与框架设计的第一个要点就是解决命名空间与变量污染的问题.jQuery就是利用了JavaScript函数作用域的特性,采用立即调用表达式包裹了自身的方法来解决这个问题. jQue ...

  8. 破解 crackme(完全拆解警告窗口)

    系统 : Windows xp 程序 : crackme 程序下载地址 :http://pan.baidu.com/s/1kUrbcAr 要求 : 注册机编写 & 去除Nag窗口 使用工具 : ...

  9. 6、SQL基础整理(日期时间数据类型,转换函数)

    日期时间数据类型 *系统常量: @@DATEFIRST(返回当前时间) DATEADD 增加时间 语法:DATEADD (datepart , number , date ) select DATEA ...

  10. HDU 5820 (可持久化线段树)

    Problem Lights (HDU 5820) 题目大意 在一个大小为50000*50000的矩形中,有n个路灯.(n<=500000) 询问是否每一对路灯之间存在一条道路,使得长度为|x1 ...