将自定义的类的对像保存在本地

-[XXXXXXX(你定义的类) encodeWithCoder:]: unrecognized selector sent to instance 0x8ec89e0‘

这个问题字面意思,就是你定义的的类的encodeWithCoder:方法找不到

既然是出现了这个问题,那么你现在肯定是在做归档操作了嘛, 你想把XXXXXXX类归档到沙盒里面去了,嘛?

但是oc只支持NSString,NSDictionary,NSArray,NSData或者NSNumber 这几个类的对象归档.

不自定义的类的对象,要想把自己定义的类的对象归档到文件中,

你自定义的类就必须:

1.遵守<NSCoding>协议

2.实现: a"- (void)encodeWithCoder:(NSCoder *)enCoder"

b"- (id)initWithCoder:(NSCoder *)decoder"

两个方法

你想把你这个类的哪些成员变量保存就在a方法中调用enCoder对象的encodeObject: forKey:方法

b方法是你从文件里面取出的时候规定的你可以取出哪些数据,你在a方法中保存了哪些成员变量你就要在b方法里 调用decoder对象的

initWithCoder:(NSCoder *)decoder方法

例子我自定义的类是IWAccount是我想将我这个类以后生成的对象保存到文件.h 和.m文件如下图

时间: 2024-09-08 12:19:20

将自定义的类的对像保存在本地的相关文章

自定义实体类在三层架构之间传递数据

自定义实体类是专门承载业务实体数据的类,一般将方法分离出来,只包含属性和字段的定义.每个实体类对应数据库中的一个表,每个属性对应表中的一个相应的字段.使用实体类属于面向对象编程的思想,将每个表封装成对应的类. 1. 为什么使用自定义实体类 (1)使程序更加灵活.如果数据库发生了更改,只需要修改数据实体类的代码,其他层的代码修改量很小. (2)使用面向对象思想将数据库中的表抽象为类,消除了关系数据与类的差别,使程序维护和扩展更方便. (3)更有利于分层架构设计. 2. 使用自定义实体类作为三层架构

第五十八课、自定义模型类(上)------------------狄泰软件学院

 一.自定义模型类 1.QStandardItemModel是一个通用的模型类 (1).能够以任意的方式组织数据(线程.非线性) (2).数据组织的基本单位为数据项(QStandardItem) (3).每一个数据项能够存储多个具体数据(附加数据角色) (4).每一个数据项能够对数据状态进行控制(可编辑.可选...) 2.Qt中的通用模型类QStandardItemModel (1).QStandardItemModel继承自抽象的模型类QAbstractItemModel (2).QStand

C#学习笔记(14)——C# 使用IComparer自定义List类的排序方案

说明(2017-7-17 21:34:59): 原文:https://my.oschina.net/Tsybius2014/blog/298702?p=1 摘要: C# 使用IComparer自定义List类的排序方案 List类中不带参数的Sort函数可以用来为List类中的元素排序,但如果List类中的元素类型本身不能直接进行比较(如自定义的struct和很多class),或是希望采用更加灵活的自定义比较方式,可以通过继承了IComparer接口的函数来解决. 代码示例如下: 1)声明一个类

修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

折腾几天记载一下,由于项目实际需要,从edmx生成的实体类能自动继承自定义的基类,这个基类不是从edmx文件中添加的Entityobject. 利用ADO.NET C# POCO Entity Generator With WCF Support生成的tt文件(比如model.tt)中找到 partial class partial class 修改tt模板让ADO.NET C# POCO Entity Generator With WCF Support 生成的实体类继承自定义基类

C++ 运算符重载四(自定义数组类)

//自定义数组类 #include<iostream> using namespace std; //分析:能获取数组长度,添加元素,删除元素,修改元素 //要求重载[],=,==,!=运算符 class MyArray { private: int mLength; int* mSpace; public: MyArray(int length){ cout << "有参构造函数被调用了1" << endl; mLength = length; m

Lua调用自定义C++类

弄了一天终于会Lua调用自定义C++类.不容易啊. 我的电脑是64位的,装了64的Python不行,装了32位的就可以了,靠!下面是报错信息 python pyyaml Cheetah全都是装32位的,其中python版本是用2.7.8,是可以的. Cocos2d-x v3.2 Cocos Code IDE 1.2.0 NDK r9d dos2unix,windows下可能在执行脚本时有这个错误.是创建项目时没有了这个文件,可以去cocos2dx里面复制一个,如 E:\cocos2d-x-3.2

Cocos2d-x 自定义按钮类控制精灵攻击----之游戏开发《赵云要格斗》

本篇要讲讲怎么自定义按钮类,并通过这个按钮类的对像来控制精灵的攻击.在看本篇之前最好先看看上一篇 Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发<赵云要格斗>,要素材和项目代码的把邮箱留下吧,因为这个项目还没弄完,我一直在改. 精灵的攻击也是一个动画,只不过,这个动画只播放一次,相当于在界面上加一个按钮,然后你点一次按钮,精灵就播放一次动画. 一.自定义按钮类 按钮可以用COCOS2D-X自带的,想着方便一点,我就自己封装了一个按钮类ControlButton,在里面添加一个

【Q2D】如何导出自定义C++类给框架使用

本文基于Quick cocos2d x这个游戏框架,为了行文流畅,后面都简称Q2D 导出自定义c++类给项目使用已经有了现成的例子了 详见:http://quick.cocos.org/?p=235 我们讨论的是如何导出给框架,使得我们以后每次新建项目的时候,都能使用到这个类 咱也是新手,忙活了会,编译成功了,就把这经历写下来,给自己一个备忘. 本例中,定义的c++类名叫Updater 1:建好C++ 头文件(Updater.h),类文件(Updater.cpp),按照开头链接给出的规则,根据头

java自定义注解类

一.前言 今天阅读帆哥代码的时候,看到了之前没有见过的新东西, 比如java自定义注解类,如何获取注解,如何反射内部类,this$0是什么意思? 于是乎,学习并整理了一下. 二.代码示例 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Tar