1.现在类里建表
/** 数据库实例 */
static FMDatabase *_db;
+ (void)initialize
{
// 1.获得数据库文件的路径
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filename = [doc stringByAppendingPathComponent:@"dataBase.sqlite"];
// 2.得到数据库
_db = [FMDatabase databaseWithPath:filename];
// 3.打开数据库
if ([_db open]) {
// 4.创表(blob 是二进制形式)
[_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_user (id integer PRIMARY KEY AUTOINCREMENT, list blob);"];
}
}
2.连接服务器端 获取数据 然后把获取到的数据插入到表中
+(void)saveData{
for (NSDictionary *dict in userArray) {
//把dict字典对象序列化成NSData二进制数据
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];
//把新数据保存
[_db executeUpdate:@"INSERT INTO t_user (list) VALUES (?)",data];
}
}
3.下次登录以后先去数据库中查 没有数据的时候再去访问网络获取 记得获取完之后调用saveData保存到本地
+(NSArray *)获取缓存方法名{
//定义一个数组
...
FMResultSet *resultSet = nil;
resultSet = [_db executeQuery:@"SELECT * FROM t_user;"];
while (resultSet.next) {
//获取保存的list
NSData *houseData = [resultSet objectForColumnName:@"list"];
NSDictionary *houseDict = [NSKeyedUnarchiver unarchiveObjectWithData:houseData];
//把获取到的字典转换成你自己的模型 然后添加到数组中 最后返回数组...
}//返回数组
...
}4.如果你每次刷新了以后 想把以前的都删除
[_db executeUpdate:@"DELETE FROM t_user;"];
如果分页的情况 就是页码是1的时候刷新就删除以前的内容
如果不分页 每次刷新就都删除了