自我总结一下关于app首页 数据缓冲:
一、最近在学习H5 所以先来总结一下H5的缓冲机制
a、localStorage:没有时间限制的数据存储,可以长期存储数据
localStorage.setItem(“key”,“value”)//存储
localStorage.getItem(key)//按key进行取值
localStorage.valueOf( )//获取全部值
localStorage.removeItem(key)//删除单个值
localStorage.clear()//删除全部数据
localStorage.length//获得数据的数量
localStorage.key(N)//获得第N个数据的key值
b、sessionStorage:会话存储,只有在浏览器被关闭之前使用。创建另一个页面时同意可以使用,关闭浏览器之后数据就会消失。(localStorage与sessionStroage用法相同)
二、源生app利用sqlite数据库来存储数据
注:利用FMDB来做数据存储
#import "VideoModelTool.h"
#import "FMDB.h"
@implementation VideoModelTool
static FMDatabase * _db;
+(void)initialize
{
//1.打开数据库
NSString * file = [[NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:@"video.sqlite"];
NSLog(@"file%@",NSHomeDirectory());
_db = [FMDatabase databaseWithPath:file];
if (![_db open]) return;
//2.创表
[_db executeUpdate:@"CREATE TABLE video_model(id integer PRIMARY KEY,video blob NOT NULL,titleId integer NOT NULL);"];
}
//从数据库中取模型
+(NSArray *)videoModels:(int)page
{ /**
* size代表每次去多少条数据、page代表页码
*/
int size = 5;
int pos = (page - 1) * size;
FMResultSet *set = [_db executeQueryWithFormat:@"SELECT * FROM video_model ORDER BY id DESC LIMIT %d,%d;", pos, size];
NSMutableArray *videos = [NSMutableArray array];
while (set.next) {
ListModel *video = [NSKeyedUnarchiver unarchiveObjectWithData:[set objectForColumnName:@"video"]];
[videos addObject:video];
}
return videos;
}
//将一个模型添加到数据库中
+(void)addModelsToSqlite:(ListModel *)video;
{
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:video];
[_db executeUpdateWithFormat:@"INSERT INTO video_model(video, titleId) VALUES(%@, %d);", data, video.titleId];
}
@end
在主页控制器中总共三步:
第一:进入页面时先从数据库中取数据,如果有就直接赋值,没有则发请求
if ([VideoModelTool videoModels:1]) {
self.modelArray = [VideoModelTool videoModels:1];
}else{
[self sendRequestWithId:-1];//发送网络请求
}