#import "StudyViewController.h"

#import "person.h"

@interface StudyViewController ()

@property (nonatomic, copy)NSString *filePath;

@end

@implementation StudyViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

person *p1 = [[person alloc]init];

p1.name = @"zhangshan";

person *p2 = [[person alloc]init];

p2.name = @"lisi";

person *p3 = [[person alloc]init];

p3.name = @"wangwu";

NSArray *pathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *filePath = [pathArr[0] stringByAppendingPathComponent:@"model"];

self.filePath = filePath;

//归档单个数据

//[NSKeyedArchiver archiveRootObject:p toFile:filePath];

//归档多个数据

NSMutableData *data = [[NSMutableData alloc]init];

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

[archiver encodeObject:p1 forKey:@"p1"];

[archiver encodeObject:p2 forKey:@"p2"];

[archiver encodeObject:p3 forKey:@"p3"];

[archiver finishEncoding];

if ([data writeToFile:self.filePath atomically:YES]) {

NSLog(@"归档成功。。。");

}

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

if ([[NSFileManager defaultManager]fileExistsAtPath:self.filePath]) {

//解档单个数据

//        person *p = [NSKeyedUnarchiver unarchiveObjectWithFile:self.filePath];

//        NSLog(@"p.name =%@",p.name);

//解档多个数据

NSData *data = [NSData dataWithContentsOfFile:self.filePath];

NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];

person *p1 = [unarchiver decodeObjectForKey:@"p1"];

person *p2 = [unarchiver decodeObjectForKey:@"p2"];

person *p3 = [unarchiver decodeObjectForKey:@"p3"];

NSLog(@"p1 =%@\np2 =%@\np3 =%@",p1.name,p2.name,p3.name);

}

}

@end

#import <Foundation/Foundation.h>

@interface person : NSObject<NSCoding>

@property (nonatomic, copy)NSString *name;

@end

#import "person.h"

@implementation person

-(instancetype)initWithCoder:(NSCoder *)aDecoder

{

self = [super init];

if (self) {

self.name = [aDecoder decodeObjectForKey:@"name"];

}

return self;

}

-(void)encodeWithCoder:(NSCoder *)aCoder

{

[aCoder encodeObject:self.name forKey:@"name"];

}

@end

iOS 数据归档----温故而知新的更多相关文章

  1. iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

    IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名 ...

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

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

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

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

  4. iOS 数据持久化(1):属性列表与对象归档

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  5. IOS数据持久化之归档NSKeyedArchiver

    IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List .NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data ...

  6. iOS数据持久化-OC

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

  7. iOS 数据持久化(扩展知识:模糊背景效果和密码保护功能)

    本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewControll ...

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

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

  9. iOS数据存储

    [reference]http://www.infoq.com/cn/articles/data-storage-in-ios 谈到数据储存,首先要明确区分两个概念,数据结构和储存方式.所谓数据结构就 ...

随机推荐

  1. try-catch-finally 与返回值的修改

    先看一段java代码,func返回值为int: public static int func() { int result = 0; try { result = 1; return result; ...

  2. Centos6安装和配置etcd3

    etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现.etcd 的灵感来自于 ZooKeeper 和 Doozer,侧重于: 简单:支持 curl 方式的用户 API ( ...

  3. 2018-2019-2 20175126谢文航 实验二《Java面向对象程序设计》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1751 班 姓名:谢文航 学号:20175126 指导教师:娄嘉鹏 实验日期:2019年4月17日 实验时间:--- 实验序号:实验二 实验名称:Ja ...

  4. Div+CSS+JQuery实现选项卡,即通过点击不同的li跳转到不同的div中显示不同的内容或者执行不同的操作。

    1.代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>   ...

  5. Linux驱动之平台设备驱动模型简析(驱动分离分层概念的建立)

    Linux设备模型的目的:为内核建立一个统一的设备模型,从而有一个对系统结构的一般性抽象描述.换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要 ...

  6. python爬虫工具集合

    python爬虫工具集合 大家一起来整理吧!强烈建议PR.这是初稿,总是有很多问题,而且考虑不全面,希望大家支持! 源文件 主要针对python3 常用库 urllib Urllib是python提供 ...

  7. [JavaScript] 弹出编辑框

    效果:单击图片copy,双击图片或者点Edit都会打开编辑窗口 Style <style> .black_overlay{ display: none; position: absolut ...

  8. leetcode 刷题进展

    最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多  前200的吃透了 足以应付非算法岗 ...

  9. 天兔(Lepus)数据库监控系统安装笔记

    天兔(Lepus)数据库监控系统安装笔记 一.部署:本次操作系统:centos6.9 IP:192.168.153.145Lepus_v3.8_beta MySQL-python-1.2.5xampp ...

  10. Chapter4_控制执行流程

    总结java中所有的与流程控制有关的知识 (1)表达式判断 Java中只允许true或者false来作为判断条件,不允许用0或者非0值作为判断条件. (2)if-else 与流程密切相关的语句,决定了 ...