iOS 归档 解档 unexpected class 问题
解决 Error Domain=NSCocoaErrorDomain Code=4864 "value for key 'xxx' was of unexpected class 'xxx'.
的问题
情况如下:
声明一个继承于NSObject
的 TestModel
对象,并遵循 NSSecureCoding
协议
重写以下方法,使用YYModel实现
- (void)encodeWithCoder:(NSCoder *)coder
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)coder
+ (BOOL)supportsSecureCoding
ViewContrller
实现以下方法:
运行代码就会报错,且无法获取到对象
Error Domain=NSCocoaErrorDomain Code=4864 "value for key 'modelDic' was of unexpected class 'NSDictionary'. Allowed classes are '{( TestModel )}'
猜测如下:
YYModel
编码时会把对象作为字典处理YYModel
解码时识别到字典就把它当成目标对象- 那么就需要我们显式指定该成员变量的类型。
解决方法如下:
方法一:使用 unarchivedObjectOfClasses: fromData: error:
解档 (推荐)
方法二:使用NSOject
作为解档目标类型并接收
作者:vony
链接:https://juejin.cn/post/6844904103747780615
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
iOS 归档 解档 unexpected class 问题相关推荐
- iOS 归档 解档使用总结
2019独角兽企业重金招聘Python工程师标准>>> 1.比较 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径: NSUserD ...
- 【iOS数据持久化】归档解档(NSKeyedArchiver/ NSKeyedUnarchiver)
简介 归档(Archive)也称为序列化(serialization),把对象转化为字节码,以文件的形式存储在磁盘上,只要遵循了NSCoding协议的对象都可以实现归档和解档(大部分foundatio ...
- IOS 利用运行时机制来进行归档解档
前言:我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置,就会变的很轻松! 首先需要导入<objc/runtime ...
- iOS 利用归档解档实现类似微博及一些CRM类软件的草稿箱思路
实际上就是写一个model类 然后将要存数据放到model中,然后将model添加到数组,然后对数组及数组中放的model归档,本地存储起来,解档,拿到数据在需要的地方显示出来 因为model是一个自 ...
- 四种数据持久化方式(上) :属性列表与归档解档
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹. iOS开发中 ...
- 使用偏好设置、属性列表、归档解档保存数据、恢复数据
数据持久化就是将文件保存到硬盘,以便下次运行时可以读取或永久保存.iOS提供了以下几种持久化方案: NSUserDefaults (偏好设置) property list 即Plist (属性列表) ...
- 数据存储之归档解档 NSKeyedArchiver NSKeyedUnarchiver
在构建应用程序时,有一个重要的问题是如何在每次启动之间持久化数据,以便重现最后一次关闭应用前的状态.在iOS和OS X上,苹果提供了三种选择:Core Data.属性列表(Property List) ...
- runtime自动归档/解档
原文出自:标哥的技术博客 前言 善用runtime,可以解决自动归档解档.想想以前归档是手动写的,确实太麻烦了.现在有了runtime,我们可以做到自动化了.本篇文章旨在学习如何通过runtime实现 ...
- iOS 之归档解档(nskeyarchieve)
iOS 归档的记录 归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存(实际上是一种文件保存的形式),浏览网上的一些资料后,并结合自己的一些经验,总结成此文. 一.使用archiveR ...
最新文章
- 20175317 《Java程序设计》第一周学习总结
- 使 WebBrowser 更简单的新加和执行 js, 可安装 jQuery 脚本的 C# 开源代码 - IEBrowser [1]...
- SSM整合时Maven项目的pom.xml版本兼容的代码备份
- java的两种运行方式Applet和Application你真的懂吗
- Python下tornado实现webSocket实现
- CodeForces - 1339E Perfect Triples(打表找规律)
- 最快解决在win下杀死端口号的方式
- linq Distinct
- 有类似split的命令吗_5分钟学linux命令之split
- PagingAndSortingRepository –如何与Thymeleaf一起使用
- The operation could not be performed because OLE DB provider SQLNCLI11 for linked server SDSSDFCC...
- easymock使用方法_EasyMock静态方法– PowerMock,JUnit 4,TestNG
- Java中BufferedReader和scanner的对比
- 计算机EXE文件改参数,exe文件修改器(eXeScope)
- adb连接 vivo_vivo手机驱动
- Java工具集-农历日期工具类
- CentOS7下ldap的安装
- 基于程序员职业对于婚配问题的研究——程序员为何单身?
- Win7通过CMD命令开启无线热点
- c++ 序列化库iguana使用总结
热门文章
- C语言——C语言程序的编写
- CentOS 7 重启 Failed to mount /sysroot
- [Err] [Dtf] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_T
- 为什么macbook不能删除u盘里东西?苹果电脑如何删除u盘文件
- zerotier 配置
- 怎么让微信群裂变拉人微信群如何裂变
- 音频剪辑软件哪个好【资源分享】
- Excel 2010 SQL应用100 域聚合函数之DSUM
- android动态平分屏幕,Android开发RecyclerView的item平分屏幕
- 热力学基础:热力学第一定律和热力学第二定律,基本过程量的热量含义