美文网首页
FMDB 离线缓存

FMDB 离线缓存

作者: 流沙3333 | 来源:发表于2017-03-06 15:39 被阅读14次

以新浪微博加载微博的工具类为例:

@implementation HWStatusTool

static FMDatabase* _db;

+ (void)initialize

{

//1.打开数据库

NSString*path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject] stringByAppendingPathComponent:@"statuses.sqlite"];

_db=  [FMDatabasedatabaseWithPath:path];//使用FMDB

[_dbopen];

//2.创表

[_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_status (id integer PRIMARY KEY, status blob NOT NULL, idstr text NOT NULL);"];

}

+ (NSArray*)statusesWithParams:(NSDictionary*)params

{

//根据请求参数生成对应的查询SQL语句

NSString*sql =nil;

if(params[@"since_id"]) {

sql = [NSString stringWithFormat:@"SELECT * FROM t_status WHERE idstr > %@ ORDER

BY idstr DESC LIMIT 20;", params[@"since_id"]];

}elseif(params[@"max_id"]) {

sql = [NSStringstringWithFormat:@"SELECT * FROM t_status WHERE idstr <= %@ ORDER

BY idstr DESC LIMIT 20;", params[@"max_id"]];

}else{

sql =@"SELECT * FROM t_status ORDER BY idstr DESC LIMIT

20;";

}

//执行SQL

FMResultSet*set = [_dbexecuteQuery:sql];

NSMutableArray*statuses = [NSMutableArray array];

while(set.next) {

NSData*statusData = [set objectForColumnName:@"status"];

NSDictionary*status = [NSKeyedUnarchiver unarchiveObjectWithData:statusData];//重点

[statuses addObject:status];

}

returnstatuses;

}

+ (void)saveStatuses:(NSArray*)statuses

{

//要将一个对象存进数据库的blob字段,最好先转为NSData

//一个对象要遵守NSCoding协议,实现协议中相应的方法,才能转成NSData

for(NSDictionary*status in statuses) {

// NSDictionary --> NSData

NSData*statusData = [NSKeyedArchiver archivedDataWithRootObject:status];//重点

[_db executeUpdateWithFormat:@"INSERT INTO t_status(status, idstr) VALUES (%@,

%@);", statusData, status[@"idstr"]];

}

}

@end

相关文章

  • FMDB 离线缓存

    以新浪微博加载微博的工具类为例: @implementation HWStatusTool static FMDa...

  • 好文书签

    使用FMDB做离线缓存的例子(iOS) - 简书 https://www.jianshu.com/p/36f7e3...

  • 一篇文章带你掌握webView+常用 缓存实现

    现在很多应用需要用到离线缓存,以前我尝试过用fmdb数据库做缓存,可是感觉太复杂,用coreData呢,要建立好多...

  • 使用FMDB做离线缓存的例子(iOS)

    本文以仿微博的应用为基础,实现使用FMDB做离线缓存 设计思路: 分析加载微博过程: 尝试从沙盒加载缓存数据 有缓...

  • H5 离线缓存

    离线缓存 什么是离线缓存,为什么要用它?这是我们需要思考的问题。 顾名思义,离线缓存,就是离线了你的东西内容也缓存...

  • iOS获取App缓存文件的大小并清除缓存

    App在处理网络资源时,一般都会做离线缓存处理,其中最典型离线缓存框架为SDWebImage。 但是,离线缓存会占...

  • 离线缓存manifest用于前端优化

    离线缓存 离线缓存又叫“ApplicationCache”,是从浏览器缓存中分出来一块缓存区,用来存储一定的资源。...

  • SYCacheManager缓存数据操作

    SYCacheManager使用FMDB、LKDB进行二次封装,缓存数据。 FMDB的基本使用使用FMDataba...

  • 3.7 离线应用

    3.7 离线应用 问题一:什么是离线应用? 离线应用是指通过离线缓存技术,让资源在第一次被加载后缓存在本地,下次访...

  • SqlLite数据库

    一、数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等。离线缓存一般都是把数据保存到...

网友评论

      本文标题:FMDB 离线缓存

      本文链接:https://www.haomeiwen.com/subject/hrlugttx.html