思路1:
1,把下载路径设置为主键(因为我这里路径是唯一的)
2,下载之前:
->查询表中是否存在该路径
->查询对应的文件的大小是否等于后台返回的文件大小
->等于则return,不等于不进行操作。
3,在下载完成方法中更新主键对应的数据。
#注意:
1,把文件下载到指定的路径。
-2,下载完成的时候存放本地文件的路径即可。
思路2:(注意:要保存本地文件的相对路径,不然更新APP的时候就尴尬了。)
1,把文件下载到指定的路径。
2,下载完成的时候存放本地文件的路径即可。
基本语句:
//建表语句
NSString * createStr = [NSString stringWithFormat:@"CREATE TABLE '%@' ('id' TXT PRIMARY KEY, 'fileName' TXT , 'filePath' TXT , 'dataDB' TXT)",tableName];
//插入语句
NSString * insertStr = [NSString stringWithFormat:@"insert into %@ (id, fileName, filePath, dataDB) values(?, ?, ?, ?) ",tableName];
//删除语句
NSString * deleteStr = [NSString stringWithFormat:@"delete from %@ where fileName='%@'",tableName,fileName];//删除指定的authodID
//更新语句
NSString * updateStr=[NSString stringWithFormat:@"update %@ set fileName='%@',filePath='%@',dataDB='%@' where id='%@'",tableName,fileName,filePath,dataDB,filePath];
//查询语句
NSString * selectStr =[NSString stringWithFormat:@"select id from %@ where id='%@'",tableName,filePath];
#扩充:
//查询t_appInfo表中降序排列,前20条数据
select * from t_appInfo desc limit 20;
注意点:
1,图片存储类型:TXT(把图片必须转化为base64格式字符串进行存储,若为BLOB类型,更新数据看着是存上了,但是数据转图片失败。)
2,文件存储类型:BLOB
//UIImage图片转成Base64字符串:
UIImage *originImage = [UIImage imageNamed:@"originImage.png"];
NSData *data = UIImageJPEGRepresentation(originImage, 1.0f);
NSString *encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
//Base64字符串转UIImage图片:
NSData *decodedImageData = [[NSData alloc] initWithBase64EncodedString:encodedImageStr options:NSDataBase64DecodingIgnoreUnknownCharacters];
UIImage *decodedImage = [UIImage imageWithData:decodedImageData];
这里最好是yes(ARC),若有release问题,下载最新fmdb即可解决.
如果想直接播放视频转成的NSData,要先写入本地,得到路径。所以不推荐这种存法。
网友评论