NSKeyedArchiver/NSCoding归档(序列化)

[精通Objective-C]归档和序列化 [精通Objective-C]归档和序列化参考书籍:《精通Objective-C》【美】 Keith Lee使用Foundation框架的归档和序列化类可以将对象(对象图)转换为具有独立结构的字节缓冲区。这样就可以将数据写入文件或者传送给其他进程(通常会通过网络)。之后,这些数据可能会被转换回对象并保留相关的对象图。这些类为数据持久化提供了轻量级技巧。序列化处理类能够保存数据和对象在其层次结构中的位 阅读详情

IOS数据持久化的方式分为三种:

  1. 属性列表 (自定义的Property List 、NSUserDefaults)
  2. 归档 (NSKeyedArchiver)
  3. 数据库 (SQLite、Core Data、第三方类库等)

  下面主要来介绍一个归档NSKeyedArchiver。

   归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象。

   归档方式:

  • 对Foundation框架中对象进行归档
  • 对自定义的内容进行归档
  • 对自定义的对象进行归档



小结:

  1. 归档和解归档操作步骤简单
  2. 一次只能归档一个对象,如果是多个对象归档需要分开进行,或放入数组中存入
  3. 归档的对象是Foundation框架中的对象
  4. 归档和解归档其中任意对象都需要归档和解归档整个文件
  5. 归档后的文件是加密的,所以归档文件的扩展名可以随意取



//============================"   归档、解归档  "=============================

//以下为封装的简单方法


/**

 *  Archiver    归档 (序列化)

 

 @param object 归档的值

 @param myPath 文件路径

 */

- (void)archiverWithObject:(id)object ofPath:(NSString *)myPath {

    

    NSMutableData   *Data = [NSMutableData data];

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

    [archiver encodeObject:object];

    [archiver finishEncoding];

    //保存到文件

    [Data writeToFile:myPath atomically:YES];

}


/**

 *  Unarchiver 解归档(反序列化)

 

 @param myPath 文件路径

 @return 获取解归档的值

 */

- (id)unarchiverWithPath:(NSString *)myPath {

    

    NSMutableData *data = [[NSMutableData alloc]initWithContentsOfFile:myPath];

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

    id obj = [unarchiver decodeObject];

    [unarchiver finishDecoding];


    return obj;

}

STM32H750实战:用TIM+DMA驱动ADC/DAC实现音频回环(附CubeMX配置避坑指南) 本文详细介绍了在STM32H750上构建高保真、低延迟音频链路的实战方法。通过配置TIM定时器作为硬件节拍器,精准触发ADC采集与DAC播放,并利用DMA实现数据的自动搬运,全程无需CPU干预。文章重点剖析了CubeMX配置中的关键步骤与常见“坑点”,如ADC的Conversion Data Management模式选择、DMA的FIFO与Burst模式配置,以及STM32H7系列必须开启ADC全局中断等,并提供了完整的代码实现与调试验证指南。 阅读详情

相关推荐

CPRI原理及应用--帧结构

对于CPRI 控制字,协议将1个超帧(256基本帧)的控制数据划分为一个“子通道”,将子通道内超帧内的控制字进行行列划分,分为4列X64行,每64个基本帧组成1列。如下图所示。每个Xs子通道内Ns的定义基本相同,在做控制字设计时,主要已Xs和Ns和X.Y.Z开展控制字映射。

u014035968的博客 2325

数据缓存——NSKeyedArchiver归档(NSCoding)

NSKeyedArchiver归档(NSCoding)   归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式),特别是能够支持自定义类型对象。   一、实现 1、要使的需要存储的对象实现NSCoding协议,从而使他自己满足写二进制数据的能力。即是自己具有序列化的能力。 2、使用NSCoder的子类方法,实现二进制数据的动作,如读或者写。即

番薯大佬的专栏 1784

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

NSCoding NSKeyedArchiver NSKeyedUnarchiver

NSCoding

mardax的专栏 1512

从SPICE到电磁场:非线性器件在CST场路协同仿真中的建模艺术

本文深入探讨了非线性器件在CST场路协同仿真中的建模技术,重点分析了SPICE模型与电磁场仿真的集成方法。通过对比线电流模型和面电流模型的优缺点,结合实际案例展示了二极管阵列在电磁散射调控中的应用,为工程师提供了优化仿真精度与效率的实用技巧。

pandas7gardener的博客 198

HttpClient跳过HTTPS证书验证的3种实战方法(含完整代码示例)

本文详细介绍了HttpClient跳过HTTPS证书验证的3种实战方法,包括自定义TrustManager、SSLContext配置和HttpClientBuilder高级定制,并提供完整代码示例。这些方法适用于开发和测试环境,帮助开发者快速解决自签名证书或未认证证书导致的HTTPS请求失败问题,但需注意生产环境的安全风险。

weixin_29213655的博客 530

复杂对象的存储--model类型对象归档(序列化),NSCoding

NSData是一个字节缓冲区的面向对象封装。这意味着,将数据转换成NSData对象可以实现数据存储和读取.而NSCoding恰好可以做到这一点。 NSCoding协议规定了两个必须实现的方法:initWithCoder:和encodeWithCoder:。initWithCoder:方法使用给定的状态初始化一个新对象,也称为反序列化。encodeWithCoder:方法接收一个带状态的对象,

幻希的专栏 1885

标准恢复二极管整流器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

报告页数: 150 图表数: 100 报告价格:¥16800 本文研究全球与中国市场标准恢复二极管整流器的发展现状及未来发展趋势,分别从生产和消费的角度分析标准恢复二极管整流器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。 主要生产商包括: Yangzhou Yangjie Vishay Intertechnology Power Semiconductors Inc Nexperia B

Fj69258的博客 5848

归档 Archive、解档Unchive、 XML(一)

1 使用归档的方式保存文件 1.1 问题 归档是任何对象都可以实现的更常规的方式,可以进行归档的对象需要实现NSCoding协议,而且每个实例变量应该是基本数据类型或者是实现NSCoding协议的某个类的实例。本案例使用归档NSKeyedArchiver和反归档NSKeyedUnarchiver将TRPerson对象写入和读取文件。 1.2 方案 首先创建一个TRPerson类,继承至NS...

weixin_30509393的博客 172

Avalonia使用CefNet 实现web-browsers(基于CentOS8 Arm64架构)

Avalonia使用CefNet 实现web-browsers(基于CentOS8 Arm64架构)

confused_kitten的博客 3803

Python海康相机api---超简单入坑学习必看

海康官网下载相机驱动​安装好以后找到Python的开发文件目录参考:D:\MVS\MVS\Development\Samples\Python\MvImport这几个文件很重要,想调用海康相机取图会用到.​为了写代码方便可以把这几个文件拷贝一下,跟你的api主文件放在同一个文件夹下可以减少80%的烦恼.​。

weixin_59360687的博客 3478

iOS 各种系统文件目录 临时,缓存,document,lib,归档,序列化

/** 1:Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 2:tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 3:Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除 */ NSArray *paths1=...

xubaoyong的专栏 1447

系统分析师论文范文(三)微服务

摘要(300字) 2024年4月,我作为系统分析师参与某省三甲医院云影像系统建设项目,负责系统分析与设计工作。该项目旨在响应国家"无胶片化"医疗政策,解决传统影像系统数据孤岛、调阅效率低等问题。系统基于DICOM 3.0和HL7国际标准,采用B/S架构与Spring Cloud Alibaba微服务技术栈,包含影像采集、智能分析、数据安全等核心模块,实现全院影像资源的云端统一管理与多端调阅。在架构设计上,通过微服务拆分、分布式事务控制及多层次安全防护机制,保障了系统的高可用性与数据一致性。系统于2024年1

echo的博客 221

iOS开发中的本地数据存储(持久化)

问题:如何把一个包含自定义对象的数组序列化到磁盘?涉及的知识点:iOS开发中的本地数据存储(持久化) 一、iOS开发中本地存储主要有三种形式 · plist文件(属性列表) · preference(偏好设置) · NSKeyedArchiver(归档) · SQLite 3 · CoreData1、plist文件 pl

onebutterfly 1953

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

iOS的文件分类、存放路径及文件属性

关键数据 内容:用户创建的数据文件,无法在删除后自动重新创建,且会 路径:主目录/Documents 属性:不要设置"不备份" 管理:iOS系统即时遇到存储空间不足的情况下,也不会清除,同时会备份到iTunes或iCloud中   缓存数据  内容:可用于离线环境,可被重复下载重复生成,即时在离线时缺失,应用本身也可以正常运行 路径:主目录/Library

要么庸俗,要么孤独 1077

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据持久化之NSCoding/NSKeyed​Archiver

原文点这儿 在构建应用程序时,一个重要的架构决策问题是在每次启动之间如何持久化数据。问题是如何精准的重现最后一次关闭应用前的状态;如何描述对象图以使下次完美地重新构建。 在 iOS 和 OS X 上, 苹果提供了两种选择 :Core Data 或 NSKeyedArchiver / NSKeyedUnarchiver (用来将遵循  的类序列化) 或者更确切地说:有三种选择,如果

Le_Wrynn的博客 659

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

foundation——NSCoding NSKeyedArchiver NSKeyedUnarchiver

概述 归档与恢复完全类似于其他语言中的序列化和反序列化归档(序列化)是把对象转换为可保存、可传输的数据流恢复(反序列化)是从数据流中恢复对象 NSCoding @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; - (nullable instancetype)initWithCoder:(NSCoder *)aD

mardax的专栏 642

iOS学习笔记-034.数据的读取——NSKeyedArchiver归档(序列化)

数据的读取NSKeyedArchiver归档序列化 一Archiver Unarchiver归档和恢复 序列化和反序列化 二NSKeyedArchiver 三NSCoding协议方法 四NSCoding协议方法的调用 五NSKeyedArchiver归档对象的注意 六代码 Personm ViewControllerh 七图示数据的读取——NSKeyedArchiver归档(序列化)一、Archi

qiwenmingshiwo的专栏 555

归档(序列化)

归档(序列化),即把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次打开程序的时候,可以通过解归档(反序列化)还原这些对象。只要遵循了NSCoding协议的对象都可以通过它实现序列化。 归档和解档在Foundation框架中分别对应NSKeyedArchiver类和NSKeyedUnarchiver类,在这两个类的定义中,提供了用于对象归档和解档的方法。用于归档以及解档的方法都是成对出现的,即一个归档方法必然对应了一个解档的方法。 // 把对象归档到一个文件中。 +(BOOL)arc

qq_32619837的博客 4897

iOS 归档(NSKeyedArchiver + NSCoding)

iOS数据持久化的方式分为三种: (1)属性列表 (自定义的Property List 、NSUSErDefaults) (2)归档 (NSKeyedArchiver) (3)数据库 (SQLite、Core Data、第三方类库等) 下面主要来介绍一个归档NSKeyedArchiver。     归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次重

司马懿的西山居 1322

NScoder和NScoding简析

NScoder  和 NScoding 有将自己定义的类的对象写入磁盘的作用 NScoding 是一个协议,主要有下面两个方法 -(id)initWithCoder:(NSCoder *)coder;//从coder中读取数据,保存到相应的变量中,即反序列化数据 -(void)encodeWithCoder:(NSCoder *)coder;// 读取实例变量,并把这些数据写到c

Eric_xchen的专栏 1560

NSCoding 与归档解档

是一个协议,用于支持对象的序列化和反序列化,也就是“归档”和“解档”操作。归档的过程将对象保存为数据,可以存储到磁盘、数据库或者传输到网络,而解档是将这些数据恢复为原始的对象。

鹏仔的技术博客 513

NSKeyedArchiver数据归档

前言 在 OC 语言中,归档是一个过程,即用某种格式来保存一个或多个对象,以便以后还原这些对象。 通常,这个过程包括将(多个)对象写入文件中,以便以后读取该对象。可以使用归档的方法进行对象的深复制。 采用归档的形式来保存数据,该数据对象需要遵守 NSCoding 协议,并且该对象对应的类必须提供 encodeWithCoder: 和 initWithCoder: 方法。 前一个方法告诉系统怎么对...

weixin_34417635的博客 108

IOS数据持久化之NSKeyedArchiver

数据持久化一般有四张方式,上面我们说了使用NSUserDefaults进行数据持久化,下面我们总结一下使用归档的方式进行数据持久化 归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式) 使用NSKeyedArchiver进行归档、NSKeyedUnarchiver进行接档,这种方式在写入、读出数据之前对数据进行序列化、反序列化操作

高级项目经理、专注于技术架构、分享项目管理及职场心得 1362

IOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (自定义的Property List 、NSUserDefaults)归档 (NSKeyedArchiver)数据库 (SQLite、Core Data、第三方类库等)   下面主要来介绍一个归档NSKeyedArchiver。    归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上;程序运行过程中或者当再次重写打开程序的时候

无名 833
上一篇: html 一些常用的功能
下一篇: ios、html加密
luckxing
博客等级 码龄12年 11粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值