IOS开发——自定义类归档(继承于自定义类)

2024-08-20 23:58

本文主要是介绍IOS开发——自定义类归档(继承于自定义类),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IOS开发——自定义类归档(继承于自定义类)

 

   我先创建一个新闻基类,对其实现NSCoding协议;再创建一个图组新闻类继承于这个新闻基类,添加一些属性(图组),那么这个自定义的图组新闻类该如何实现归档呢?

   下面是个痛苦的领悟...


图片新闻类:


#import "DMNewsDataModel.h"
@interface DMPictureNewsModel : DMNewsDataModel<NSCoding>
@property (strong, nonatomic)NSMutableArray *ymImageList;//图片列表
@end#import "DMPictureNewsModel.h"
@implementation DMPictureNewsModel
@synthesize ymImageList = _ymImageList;
//数据归档
- (void)encodeWithCoder:(NSCoder *)aCoder{[super encodeWithCoder:aCoder];[aCoder encodeObject:_ymImageList forKey:@"_ymImageList"]; 
}//数据逆归档
- (id)initWithCoder:(NSCoder *)aDecoder{self = [super initWithCoder:aDecoder];if(self){_ymImageList = [aDecoder decodeObjectForKey:@"_ymImageList"];    }return self;
}
@end

新闻基类:


#import <Foundation/Foundation.h>
@interface DMNewsDataModel : NSObject<NSCoding>
@property (strong, nonatomic)NSString *ymContentid;  //新闻ID
@property (strong, nonatomic)NSString *ymTitle;      //新闻标题
@property (strong, nonatomic)NSString *ymModelid;    //"模型id"比如 1 文章 2 组图 3 视频
@property (strong, nonatomic)NSString *ymCatid;      //分类id
@property (strong, nonatomic)NSString *ymDescription;//内容简介
@property (strong, nonatomic)NSString *ymPublished;  //新闻发布时间戳
@property (strong, nonatomic)NSString *ymContent;    //新闻内容
@property (strong, nonatomic)NSString *ymSource;     //新闻来源
@property (strong, nonatomic)NSString *ymThumb;      //新闻配图地址
@property (strong, nonatomic)NSString *ymVideo;      //视频URL(请求的新闻模型为modelid=4,其他为空)
@property (strong, nonatomic)NSString *ymPlaytime;   //点击次数
@property (strong, nonatomic)NSString *ymTopicid;    // 话题id  用于评论
@property (strong, nonatomic)NSString *ymComments;   //评论条数///新闻获取
-(void)setContentid:(NSString *)theContentidandTitle:(NSString *)theTitleandModelid:(NSString *)theModelidandCatid:(NSString *)theCatidandPublished:(NSString *)thePublishedandSource:(NSString *)theSourceandDescription:(NSString *)theDescriptionandContent:(NSString *)theContentandThumb:(NSString *)theThumbandVideo:(NSString *)theVideoandPlaytime:(NSString *)thePlaytimeandTopicid:(NSString *)theTopicidandComments:(NSString *)theComments;//归档,必须写前面
- (void)encodeWithCoder:(NSCoder *)aCoder;//逆归档
- (id)initWithCoder:(NSCoder *)aDecoder;
@end#import "DMNewsDataModel.h"
@implementation DMNewsDataModel
@synthesize ymContentid = _ymContentid;
@synthesize ymTitle     = _ymTitle;
@synthesize ymModelid   = _ymModelid;
@synthesize ymCatid     = _ymCatid;
@synthesize ymPublished = _ymPublished;
@synthesize ymSource    = _ymSource;
@synthesize ymDescription = _ymDescription;
@synthesize ymContent   = _ymContent;
@synthesize ymThumb     = _ymThumb;
@synthesize ymVideo     = _ymVideo;
@synthesize ymPlaytime  = _ymPlaytime;
@synthesize ymTopicid   = _ymTopicid;
@synthesize ymComments  = _ymComments;//归档
- (void)encodeWithCoder:(NSCoder *)aCoder{[aCoder encodeObject:_ymContentid forKey:@"_ymContentid"];[aCoder encodeObject:_ymTitle forKey:@"_ymTitle"];[aCoder encodeObject:_ymModelid forKey:@"_ymModelid"];[aCoder encodeObject:_ymCatid forKey:@"_ymCatid"];[aCoder encodeObject:_ymPublished forKey:@"_ymPublished"];[aCoder encodeObject:_ymSource forKey:@"_ymSource"];[aCoder encodeObject:_ymDescription forKey:@"_ymDescription"];[aCoder encodeObject:_ymContent forKey:@"_ymContent"];[aCoder encodeObject:_ymThumb forKey:@"_ymThumb"];[aCoder encodeObject:_ymVideo forKey:@"_ymVideo"];[aCoder encodeObject:_ymPlaytime forKey:@"_ymPlaytime"];[aCoder encodeObject:_ymTopicid forKey:@"_ymTopicid"];[aCoder encodeObject:_ymComments forKey:@"_ymComments"];}//逆归档
- (id)initWithCoder:(NSCoder *)aDecoder{self = [super init];if(self){_ymContentid   = [aDecoder decodeObjectForKey:@"_ymContentid"];_ymTitle       = [aDecoder decodeObjectForKey:@"_ymTitle"];_ymModelid     = [aDecoder decodeObjectForKey:@"_ymModelid"];_ymCatid       = [aDecoder decodeObjectForKey:@"_ymCatid"];_ymPublished   = [aDecoder decodeObjectForKey:@"_ymPublished"];_ymSource      = [aDecoder decodeObjectForKey:@"_ymSource"];_ymDescription = [aDecoder decodeObjectForKey:@"_ymDescription"];_ymContent     = [aDecoder decodeObjectForKey:@"_ymContent"];_ymThumb       = [aDecoder decodeObjectForKey:@"_ymThumb"];_ymVideo       = [aDecoder decodeObjectForKey:@"_ymVideo"];_ymPlaytime    = [aDecoder decodeObjectForKey:@"_ymPlaytime"];_ymTopicid     = [aDecoder decodeObjectForKey:@"_ymTopicid"];_ymComments    = [aDecoder decodeObjectForKey:@"_ymComments"];}return self;
}@end



这篇关于IOS开发——自定义类归档(继承于自定义类)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091546

相关文章

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

自定义注解SpringBoot防重复提交AOP方法详解

《自定义注解SpringBoot防重复提交AOP方法详解》该文章描述了一个防止重复提交的流程,通过HttpServletRequest对象获取请求信息,生成唯一标识,使用Redis分布式锁判断请求是否... 目录防重复提交流程引入依赖properties配置自定义注解切面Redis工具类controller

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Java Exception异常类的继承体系详解

《JavaException异常类的继承体系详解》Java中的异常处理机制分为异常(Exception)和错误(Error)两大类,异常分为编译时异常(CheckedException)和运行时异常... 目录1. 异常类的继承体系2. Error错误3. Exception异常3.1 编译时异常: Che

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注