一、简介

  在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦;

  偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息

  归档:因为前两者都有一个致命的缺陷,只能存储常用的类型。归档可以实现把自定义的对象存放在文件中。

二、使用

#import "ViewController.h"
#import "Person.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad
{[super viewDidLoad];//1.创建对象Person *p=[[Person alloc]init];p.name=@"deng";p.age=23;p.height=1.7;//2.获取文件路径NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];NSString *path=[docPath stringByAppendingPathComponent:@"person.deng"];NSLog(@"path=%@",path);//3.将自定义的对象保存到文件中
    [NSKeyedArchiver archiveRootObject:p toFile:path];
}-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{//1.获取文件路径NSString *docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];NSString *path=[docPath stringByAppendingPathComponent:@"person.deng"];NSLog(@"path=%@",path);//2.从文件中读取对象Person *p=[NSKeyedUnarchiver unarchiveObjectWithFile:path];NSLog(@"%@,%d,%.1f",p.name,p.age,p.height);
}
@end

person.h文件

#import <Foundation/Foundation.h>@interface Person : NSObject <NSCoding>@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)int age;
@property(nonatomic,assign)double height;@end

person.m

#import "Person.h"@implementation Person-(void)encodeWithCoder:(NSCoder *)aCoder
{[aCoder encodeObject:self.name forKey:@"name"];[aCoder encodeInt:self.age forKey:@"age"];[aCoder encodeDouble:self.height forKey:@"height"];
}-(id)initWithCoder:(NSCoder *)aDecoder
{if (self == [super init]) {self.name = [aDecoder decodeObjectForKey:@"name"];self.age = [aDecoder decodeIntForKey:@"age"];self.height = [aDecoder decodeDoubleForKey:@"height"];}return self;
}@end

三、注意

1.一定要实现协议<NSCoding>,并在要保存对象的.m文件中实现两个协议方法(如果不实现会报错):

  -(void)encodeWithCoder:(NSCoder *)aCoder

   -(id)initWithCoder:(NSCoder *)aDecoder

2.保存保存时对象的属性类型一定要注意,要用对应的方法保存对应的属性。

3.读取出来的数据一定要赋给对象的属性。

转载于:https://www.cnblogs.com/huadeng/p/7081359.html

iOS数据持久化--归档相关推荐

  1. 【iOS数据持久化】Plist使用

    iOS数据持久化Plist使用 iOS 端数据持久化就是把数据保存在本地,常用于基本信息储存,应用配置,应用支持数据源,网络请求缓存等.主要有如下几种方式: 方式 介绍 特点 Plist文件 属性列表 ...

  2. iOS 数据持久化方式 - 归档 反归档

    所谓归档:将复杂对象转化为NSData类型数据(复杂-->归档-->NSData--->WriteToFile) 注意:归档是将对象转化为数据字节,以文件的形式存储在磁盘上, 所谓反 ...

  3. iOS - 数据的归档和反归档

    前言 由于机缘巧合,有了对 iOS 基础知识查漏补缺的机会,为了建立更加完善的 iOS 开发知识体系,这里将会更新一段时间的基础知识相关的文章.本篇文章主要介绍利用 NSKeyedArchiver 和 ...

  4. iOS数据持久化方案

    技术由来 数据持久化是iOS开发中必不可少的一项技能.因为开发中我们多会涉及到用户信息存储.文件存储.应用内容缓存中的一个或者几个场景. 数据持久化的几种方式 NSUserDefaults plist ...

  5. 【iOS数据持久化】数据库(SQLite.swift)和FMDB

    数据持久化之SQLite数据库(SQLite.swift使用) 一.     简介 SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了.它的处理速 ...

  6. iOS - 数据持久化之 FMDB 的使用

    前言 上一篇文章「iOS - 使用 SQLite 数据库实现数据持久化」,介绍了如何使用 sqlite3 操作 SQLite 数据库实现增删改查.但是在代码编写的过程中,我们发现 sqlite3 需要 ...

  7. iOS 数据持久化 -- Core Data (2)

    2019独角兽企业重金招聘Python工程师标准>>> 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里, ...

  8. 【iOS数据持久化】偏好设置(UserDefaults)

    官网文档:NSUserDufaultClass Reference 关于偏好设置:AboutPreferences and Settings UserDefualts是一种便利的,通过key-valu ...

  9. 【iOS数据持久化】归档解档(NSKeyedArchiver/ NSKeyedUnarchiver)

    简介 归档(Archive)也称为序列化(serialization),把对象转化为字节码,以文件的形式存储在磁盘上,只要遵循了NSCoding协议的对象都可以实现归档和解档(大部分foundatio ...

最新文章

  1. 数据蒋堂 | 做基础软件要投入很多钱?
  2. 让列表只显示数据,不显示文件夹的方法
  3. 面试必问!有没有比读写锁更快的锁?
  4. Nutch+Hadoop集群搭建
  5. java技术难点_Java核心技术第四章----对象与类重难点总结
  6. 做决定前别拍脑袋:两个成功案例看懂A/B测试
  7. H.264 NAL层解析
  8. openai-gpt_OpenAI的GPT-3:货物崇拜编程人员的终结
  9. 在校大学生如何规划自己的程序员之路
  10. 通过nginx代理实现内网访问百度地图方案
  11. c莫比乌斯函数_莫比乌斯函数
  12. 最全的英语收藏夹(精品)
  13. [车联网安全自学篇] 关于IoT安全该如何入门?你必须知道的那些事「3万字详解」
  14. 实时调度论文中经常出现的术语 ties broken arbitrary的意思
  15. 学生专用计算机怎样开启关机,电脑自动关机,教您笔记本怎么设置自动关机
  16. css3中的属性选择器以及新增伪类
  17. Mac 安装homebrew
  18. Django 学习 之ORM简介与单表操作
  19. 财务人员怎么用python_财务人员有必要学习Python语言吗?
  20. 详解程序员驻场开发服务的具体流程

热门文章

  1. Python多线程thread与threading实现
  2. PHP6 Web 开发读书笔记
  3. FreeBSD下查看各软件版本命令
  4. 纽约时报:华为大举挺进美国市场
  5. 基数排序python实现
  6. 移动IM开发指南3:如何优化登录模块
  7. win7 win10 win8系统文件夹重命名要刷新下文件名才会改变,桌面也不会自动刷新...
  8. python脚本 通过rsa private key 生成 publickey
  9. 【工具使用系列】关于 MATLAB 机器视觉,你需要知道的事
  10. SRX 透明模式配置