这里的归档主要是用于自定义类的归档和解档。我们这里使用NSKeyedArchiver和NSKeyedUnarchiver来归档和解档。

注意:自己定义的类需要实现<NSCoding>,如:@interface User : NSObject <NSCoding>,并实现Coding中相应的方法。

/*************************************User.h*************************************/

//

// User.h

// customContentArchiveDemo

//

// Created by Warrior on 14-1-7.

// Copyright (c) 2014年 Warrior. All rights reserved.

//

#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

/*************************************User.m*************************************/

//

// User.m

// customContentArchiveDemo

//

// Created by Warrior on 14-1-7.

// Copyright (c) 2014年 Warrior. All rights reserved.

//

#import “User.h”

#define NAME @“name”

#define EMAIL @“email”

#define PASSWORD @“passWord”

#define AGE @“age”

@implementation User

@synthesize name;

@synthesize email;

@synthesize passWord;

@synthesize age;

//对属性解码,解档的时候调用

- (id)initWithCoder:(NSCoder *)aDecoder

{

if(self = [super init])

{

//注意这里要添加self

name = [aDecoder decodeObjectForKey:NAME];

email = [aDecoder decodeObjectForKey:EMAIL];

passWord = [aDecoder decodeObjectForKey:PASSWORD];

age = [aDecoder decodeIntForKey:AGE];

}

return self;

}

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

- (void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:name forKey:NAME];

[aCoder encodeObject:email forKey:EMAIL];

[aCoder encodeObject:passWord forKey:PASSWORD];

[aCoder encodeInt:age forKey:AGE];

}

@end

使用归档和解档的方法来实现保存数据。

/*************************************main.m*************************************/

//

// main.m

// customContentArchiveDemo

//

// Created by Warrior on 14-1-7.

// Copyright (c) 2014年 Warrior. All rights reserved.

//

#import <Foundation/Foundation.h>

#import “User.h”

int main(int argc, const char * argv[])

{

@autoreleasepool {

//归档

NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@”user.archive”];

NSFileManager *fileManger = [NSFileManager defaultManager];

if(![fileManger fileExistsAtPath:filePath])

[fileManger createFileAtPath:filePath contents:nil attributes:nil];

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

user.name = @”Warrior Sun”;

user.email = @”suenihy@hotmail.com”;

user.passWord = @”123456”;

user.;

if([NSKeyedArchiver archiveRootObject:user toFile:filePath])

{

NSLog(@”归档成功”);

}

//解档

User *unUser = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

NSLog(@”User name:%@”, unUser.name);

}

;

}

—————————————————————————————————————————————————————————————

要保存基本数据类型,如int,NSString等,可以将user的变量修改为相应的基本类型变量。

iOS 数据存储 - 归档和解归档的更多相关文章

  1. iOS数据存储之对象归档

    iOS数据存储之对象归档 对象归档 对象归档是iOS中数据持久化的一种方式. 归档是指另一种形式的序列化,但它是任何对象都可以实现的更常规的类型.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文 ...

  2. IOS 数据存储(NSKeyedArchiver 归档篇)

    什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储. 归档的作用 之前将数据存储到本地,只能是字符串.数组.字 ...

  3. iOS:文件归档和解归档的详解和使用

    文件归档和解归档: 用途: 所谓文件归档,就是把需要存储的对象数据存储到沙盒的Documents目录下的文件中,即存储到了磁盘上,实现数据的持久性存储和备份.解归档,就是从磁盘上读取该文件下的数据,用 ...

  4. swift 之归档和解归档

    swift 之归档和解归档 数据持久化的方式有很多种,归档是其中的一种,说起数据持久化的方式,iOS 中基本有以下几种方式:sqlite存储.coredata存储.UserDefault存储.归档.p ...

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

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

  6. iOS数据存储类型 及 堆(heap)和栈(stack)

    iOS数据存储类型 及 堆(heap)和栈(stack) 一般认为在c中分为这几个存储区: 1栈 --  由编译器自动分配释放. 2堆 --  一般由程序员分配释放,若程序员不释放,程序结束时可能由O ...

  7. 【IPHONE开发-OBJECTC入门学习】对象的归档和解归档

    转自:http://blog.csdn.net/java886o/article/details/9046967 #import <Foundation/Foundation.h> #im ...

  8. ios数据存储——对象归档

    归档:数据从内存与闪存相互转化,类似“序列化”,将数据转换成二进制字节数据 操作:有两种方式,第一种是单个对象作为root进行归档和恢复,一个对象一个文件:第二种,可以同时归档多个对象到一个文件 注意 ...

  9. IOS数据存储之Sqlite数据库

    前言: 之前学习了数据存储的NSUserDefaults,归档和解档,沙盒文件存储,但是对于数据量比较大,需要频繁查询,删除,更新等操作的时候无论从效率上还是性能上,上述三种明显不能满足我们的日常开发 ...

随机推荐

  1. python 批量请求url

    import urllib2 from urllib import quote f = open("data.in", "r") out = file(&quo ...

  2. startActivityForResult用法详解

    一.如果想在Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode ...

  3. HackerRank "Favorite sequence"

    Typical topological sorting problem .. why is it 'difficult'? #include <iostream> #include < ...

  4. linux下的php网站放到Windows服务器IIS下导入 .htaccess文件伪静态规则转换 (wordpress)

    需要特别注意的是: 1. .htacdess文件在 wordpress中 是可以生成的 安装 WP Super Cache后,开启该插件>>设置>>高级>>找到并点 ...

  5. 剑指offer系列18---顺时针打印矩阵

    [题目]定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.要求时间复杂度是O(1).push pop min [思路]设计一个辅助栈,当新加入的原数据栈中的数小于辅助栈顶的数时就加 ...

  6. (转)Sqlite 管理工具 SQLiteDeveloper及破解

    本文转载自:http://www.cnblogs.com/error404/archive/2012/03/21/2409898.html 功能特点 表结构设计,数据维护,ddl生成,加密数据库支持, ...

  7. 1. Netty解决Tcp粘包拆包

    一. TCP粘包问题 实际发送的消息, 可能会被TCP拆分成很多数据包发送, 也可能把很多消息组合成一个数据包发送 粘包拆包发生的原因 (1) 应用程序一次写的字节大小超过socket发送缓冲区大小 ...

  8. [转]将Word转(保存)为带书签的PDF

    提到的方法非常管用,感谢原作者的分享. 原文地址:http://blog.163.com/rongting_chen/blog/static/16490684420114266192887/ 将wor ...

  9. ADF_Starting系列2_使用ADF开发富Web应用程序之建立Business Services

    2013-05-01 Created By BaoXinjian

  10. ADF_ADF Faces系列6_ADF数据可视化组件简介之建立Thematic Map Component

    2013-05-01 Created By BaoXinjian