首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

iOS数据持久化之二——归档与设计可存储化的数据模型基类

归档是将一种或者多种数据类型进行序列化,解归档的过程就是将序列化的数据进行反序列化的解码,这里需要注意一点,归档的核心并非是数据的持久化处理,而是数据的序列化处理,持久化的处理依然是通过文件存取来实现的...原则上说,无论是什么数据类型的对象,系统的或者是我们自定义的,都可以通过实现这个协议中的方法来支持归档操作。...可以看出,正是我们前边说过的,必须遵守归档协议的对象,才可以被归档,我们在MyObject类中实现如下两个方法: //解档方法 - (instancetype)initWithCoder:(NSCoder... *)coder {     if (self=[super init]) {         _name = [coder decodeObjectForKey:@"name"];         _... *)coder {     [coder encodeObject:_name forKey:@"name"];     [coder encodeInt:_age forKey:@"age"]; }

1.1K30

iOS_指定初始化方法Designated Initializer和非指定初始化方法Secondary Initializer

2.标记方式: NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) 目的:保证该类的DI被调用 3.实现原则...: 必须调用父类的DI, 对于父类亦然,直到根类 (不可调用自己其他的DI) 如果父类没有实现相应的方法,则需要根据实际情况来决定是给父类补充一个新的方法还是调用父类其他数据源的DI。...- (instancetype)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; // 调用父类相关DI...if (self) { // 再执行本类相关任务 _width = [coder decodeFloatForKey:@"width"]; _height = [coder decodeFloatForKey...- (instancetype)initWithCoder:(NSCoder *)coder { self = [super initWithCoder:coder]; // 如果没有调用父类的同名方法

50030
领券