如何使用YYCache存储自定义对象

YYCache是一个缓存框架,由YYCache、YYDiskCache、YYMemoryCache和YYKVStorage组成。在项目开发过程中,想通过YYCache存储一个自定义对象,这个对象包括文章的ID、标题、图片、作者。但是在存储的过程中发现,YYCache并不能将此对象成功存储到本地,查看API后发现,如果保存的自定义对象不遵守NSCoding的协议或不实现NSCoding协议的方法,就不能使用YYDiskCache进行长期缓存。

也就是说通过YYCache存储自定义对象的时候,需要对该自定义对象先进行归档与反归档的操作,这样才能将其成功存储到本地。

通过YYCache实现存储自定义对象的步骤:

一、创建自定义对象ArticleCacheModel,包括属性文章的ID、标题、图片、作者,同时遵循<NSCoding>协议
@interface ArticleCacheModel: NSObject <NSCoding>
 + (instancetype)shareInstace;
@property(nonatomic, copy)NSString *articleTitle;
@property(nonatomic, copy)NSString *imageUrl;
@property(nonatomic, copy)NSString *authorName;
@property(nonatomic, assign)NSInteger articleID;
@end
二、对自定义对象做归档与反归档的操作

归档(序列化)

- (void)encodeWithCoder:(NSCoder *)aCoder {
    [aCoder encodeInteger:self.articleID forKey:@"articleID"];
    [aCoder encodeObject:self.authorName forKey:@"authorName"];
    [aCoder encodeObject:self.articleTitle forKey:@"articleTitle"];
    [aCoder encodeObject:self.imageUrl forKey:@"imageUrl"];
}

反归档(反序列化)

- (instancetype)initWithCoder:(NSCoder *)aDecoder {
    self.articleID = [aDecoder decodeIntForKey:@"articleID"];
    self.authorName = [aDecoder decodeObjectForKey:@"authorName"];
    self.articleTitle = [aDecoder decodeObjectForKey:@"articleTitle"];
    self.imageUrl = [aDecoder decodeObjectForKey:@"imageUrl"];
    
    return self;
}
三、将自定义的对象用YYCache储存到本地
YYCache *_dataCache =[[YYCache alloc] initWithName:@"ArticleCache"];
_dataCache.memoryCache.shouldRemoveAllObjectsOnMemoryWarning=YES;

ArticleCacheModel *cacheModel = [ArticleCacheModel shareInstace];
 
        cacheModel.articleID = @”文章ID”;
        cacheModel.articleTitle = @”文章标题”;
        cacheModel.imageUrl = @”图片地址”;
        cacheModel.authorName = @”作者名字”;
//存储到本地
[_dataCache setObject: cacheModel forKey:@“cacheModelKey”];

通过key取本地值

ArticleCacheModel  *cacheModel = [YYCache objectForKey: @“cacheModelKey”];
NSLog(@”%@”,cacheModel);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 缓存的四种方式?各自应用的场景? 缓存本质将请求到的数据存储到本地,将数据显示到UI界面前先询问本地数据库是否已经...
    Carden阅读 865评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • 有时候眼睛是一种摆设, 它四处游离却漫无目的 有时候耳朵是一种摆设, 它听见一切却恍若未闻 有时候嘴巴是一种摆设,...
    明岚阅读 326评论 0 0
  • 这节课的培训目标:掌握薰衣草的基本形态……大多数术语比较专业,致力于专业学习的人,喜爱薰衣草的以后会有更通俗易懂的...
    区块链项目赚阅读 1,761评论 3 10