iOS数据持久化--归档
一、简介
在使用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数据持久化--归档相关推荐
- 【iOS数据持久化】Plist使用
iOS数据持久化Plist使用 iOS 端数据持久化就是把数据保存在本地,常用于基本信息储存,应用配置,应用支持数据源,网络请求缓存等.主要有如下几种方式: 方式 介绍 特点 Plist文件 属性列表 ...
- iOS 数据持久化方式 - 归档 反归档
所谓归档:将复杂对象转化为NSData类型数据(复杂-->归档-->NSData--->WriteToFile) 注意:归档是将对象转化为数据字节,以文件的形式存储在磁盘上, 所谓反 ...
- iOS - 数据的归档和反归档
前言 由于机缘巧合,有了对 iOS 基础知识查漏补缺的机会,为了建立更加完善的 iOS 开发知识体系,这里将会更新一段时间的基础知识相关的文章.本篇文章主要介绍利用 NSKeyedArchiver 和 ...
- iOS数据持久化方案
技术由来 数据持久化是iOS开发中必不可少的一项技能.因为开发中我们多会涉及到用户信息存储.文件存储.应用内容缓存中的一个或者几个场景. 数据持久化的几种方式 NSUserDefaults plist ...
- 【iOS数据持久化】数据库(SQLite.swift)和FMDB
数据持久化之SQLite数据库(SQLite.swift使用) 一. 简介 SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了.它的处理速 ...
- iOS - 数据持久化之 FMDB 的使用
前言 上一篇文章「iOS - 使用 SQLite 数据库实现数据持久化」,介绍了如何使用 sqlite3 操作 SQLite 数据库实现增删改查.但是在代码编写的过程中,我们发现 sqlite3 需要 ...
- iOS 数据持久化 -- Core Data (2)
2019独角兽企业重金招聘Python工程师标准>>> 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里, ...
- 【iOS数据持久化】偏好设置(UserDefaults)
官网文档:NSUserDufaultClass Reference 关于偏好设置:AboutPreferences and Settings UserDefualts是一种便利的,通过key-valu ...
- 【iOS数据持久化】归档解档(NSKeyedArchiver/ NSKeyedUnarchiver)
简介 归档(Archive)也称为序列化(serialization),把对象转化为字节码,以文件的形式存储在磁盘上,只要遵循了NSCoding协议的对象都可以实现归档和解档(大部分foundatio ...
最新文章
- 数据蒋堂 | 做基础软件要投入很多钱?
- 让列表只显示数据,不显示文件夹的方法
- 面试必问!有没有比读写锁更快的锁?
- Nutch+Hadoop集群搭建
- java技术难点_Java核心技术第四章----对象与类重难点总结
- 做决定前别拍脑袋:两个成功案例看懂A/B测试
- H.264 NAL层解析
- openai-gpt_OpenAI的GPT-3:货物崇拜编程人员的终结
- 在校大学生如何规划自己的程序员之路
- 通过nginx代理实现内网访问百度地图方案
- c莫比乌斯函数_莫比乌斯函数
- 最全的英语收藏夹(精品)
- [车联网安全自学篇] 关于IoT安全该如何入门?你必须知道的那些事「3万字详解」
- 实时调度论文中经常出现的术语 ties broken arbitrary的意思
- 学生专用计算机怎样开启关机,电脑自动关机,教您笔记本怎么设置自动关机
- css3中的属性选择器以及新增伪类
- Mac 安装homebrew
- Django 学习 之ORM简介与单表操作
- 财务人员怎么用python_财务人员有必要学习Python语言吗?
- 详解程序员驻场开发服务的具体流程