归档-对模型数组对象(存储到本地的plist文件)也数组里存放的是模型
2024-09-30 01:28:29
一、模型文件
(1)JLMainViewsModel.h文件 必须遵循 NSCoding协议
@interface JLMainViewsModel : NSObject<NSCopying,NSCoding>
(2)JLMainViewsModel.m文件 实现代理方法
@implementation JLMainViewsModel -(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.fromSource forKey:@"fromSource"];
[aCoder encodeObject:self.url forKey:@"url"];
[aCoder encodeObject:self.title forKey:@"title"];
[aCoder encodeObject:self.type forKey:@"type"];
[aCoder encodeObject:self.newsTime forKey:@"newsTime"];
[aCoder encodeObject:self.imageUrl forKey:@"imageUrl"];
[aCoder encodeObject:self.imageArray forKey:@"imageArray"];
[aCoder encodeObject:self.bigImageUrl forKey:@"bigImageUrl"];
[aCoder encodeObject:self.bigImageArray forKey:@"bigImageArray"];
[aCoder encodeObject:self.recommend forKey:@"recommend"];
[aCoder encodeObject:self.exData forKey:@"exData"];
[aCoder encodeObject:self.newsType forKey:@"newsType"];
[aCoder encodeObject:self.style forKey:@"style"];
[aCoder encodeObject:self.gzh forKey:@"gzh"];
[aCoder encodeObject:self.uniqId forKey:@"uniqId"];
[aCoder encodeObject:self.subdesc forKey:@"subdesc"];
[aCoder encodeObject:self.autoplay forKey:@"autoplay"];
[aCoder encodeObject:self.fromicon forKey:@"fromicon"];
[aCoder encodeObject:self.webUrl forKey:@"webUrl"];
} -(id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super init]) {
self.fromSource = [aDecoder decodeObjectForKey:@"fromSource"];
self.url = [aDecoder decodeObjectForKey:@"url"];
self.title = [aDecoder decodeObjectForKey:@"title"];
self.type = [aDecoder decodeObjectForKey:@"type"];
self.newsTime = [aDecoder decodeObjectForKey:@"newsTime"];
self.imageUrl = [aDecoder decodeObjectForKey:@"imageUrl"];
self.imageArray = [aDecoder decodeObjectForKey:@"imageArray"];
self.bigImageUrl = [aDecoder decodeObjectForKey:@"bigImageUrl"];
self.bigImageArray = [aDecoder decodeObjectForKey:@"bigImageArray"];
self.recommend = [aDecoder decodeObjectForKey:@"recommend"];
self.exData = [aDecoder decodeObjectForKey:@"exData"];
self.newsType = [aDecoder decodeObjectForKey:@"newsType"];
self.style = [aDecoder decodeObjectForKey:@"style"];
self.gzh = [aDecoder decodeObjectForKey:@"gzh"];
self.uniqId = [aDecoder decodeObjectForKey:@"uniqId"];
self.subdesc = [aDecoder decodeObjectForKey:@"subdesc"];
self.autoplay = [aDecoder decodeObjectForKey:@"autoplay"];
self.fromicon = [aDecoder decodeObjectForKey:@"fromicon"];
self.webUrl = [aDecoder decodeObjectForKey:@"webUrl"];
}
return self;
} - (id)copyWithZone:(NSZone *)zone
{
JLMainViewsModel *model = [[[self class] allocWithZone:zone]init];
return model;
}
@end
二、对模型数组进行存储 到本地
//此段代码紧紧只是为了说明 存储段数组 是模型数组
NSMutableArray *mArray = [NSMutableArray array];
//字典转模型
for (NSDictionary *dict in array) {
JLMainViewsModel *news = [JLMainViewsModel newsWithDict:dict];
[mArray addObject:news];
}
这段代码才是 存储操作
//1.获取存储的路径
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePatha = [documents stringByAppendingPathComponent:@"newsModelWithArray.plist"];
//归档
[NSKeyedArchiver archiveRootObject:mArray toFile:filePatha];
三、读取 归档的数据
#pragma mark - 获取本地缓存(归档)
-(BOOL)getNwsDataUnarchiver{
NSString *documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSString *filePath = [documents stringByAppendingPathComponent:@"newsModelWithArray.plist"];
NSMutableArray<JLMainViewsModel *> *newsModelList = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
if (newsModelList.count > ) {
self.dataArray = newsModelList.mutableCopy;
return YES;
}
return NO;
}
最新文章
- 十分钟介绍mobx与react
- JSON.parse和eval的区别
- golang os/exec 执行外部命令
- 老码农教你在 StackOverflow 上谈笑风生
- c++ map 的使用
- angularjs中$http、$location、$watch及双向数据绑定学习实现简单登陆验证
- NULL值比较,两个列的合并,列值按条件替换。
- 16)JAVA实现回调(Android,Swing中各类listener的实现)
- WebApp开发之Cordova安装教程
- 任务分发系统gearman
- 关于ionic的一些坑(3)
- netstat/ps用法
- sqoop mysql导入hive 数值类型变成null的问题分析
- 洛谷P1063能量项链题解
- linux服务器ntp客户端配置【转】
- linux环境如何配置repo
- HTML基础【5】:表单标签
- Oracle 视图和索引
- JAVA软件安装
- [转]解决ssh登录后闲置时间过长而断开连接
热门文章
- unity导出android项目
- 对于iPhone描述文件的签名认证
- windows64位安装mysql-5.7.12,图文
- mysql的navicat注册码生成
- the art of seo(chapter four)
- 基于logstash+elasticsearch+kibana的日志收集分析方案(Windows)
- Azure SQL Database (27) 创建Table Partition
- EasyUI 下载与引用
- Ubuntu无法访问Windows磁盘, 且无提示信息
- npm安装appium server路过的坑