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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char