开源软件名称:YTBaseDBManager
开源软件地址:https://gitee.com/dhar/YTBaseDBManager
开源软件介绍:
YTBaseDBManagerIOS数据库升级数据数据迁移的解决方案 原理分析IOS 数据库升级数据迁移解决方案 安装使用 Pod 导入,因为是开发库,所以需要指定 :path 参数 pod 'YTBaseDBManager', :path => '../' 使用客户端使用的DEMO代码如下 - 客户端使用方法
[self setDBFilePath:DBPath newDBVersion:DB_Version]; 设置数据库路径 - 客户端重写模板方法
initTables 执行创建表的逻辑 - 底层库会自动分析新表和旧表,自动进行数据迁移的操作
/** 数据库保存的缓存目录 */static NSString* kDBCache = @"DBCache";/** 数据库文件名称 */static NSString* DB_NAME = @"YTDB.sqlite";/** 当前使用的数据库版本,程序会根据版本号的改变升级数据库以及迁移旧的数据 */static NSString* DB_Version = @"1.0.1";@implementation YTBusinessDBManager// 子类的单例+ (instancetype)sharedInstance{ static id instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[self alloc] init]; }); return instance;}- (instancetype)init { self = [super init]; if (self) { // 创建数据库文件 NSString* cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *DBDir = [cachePath stringByAppendingPathComponent:kDBCache]; BOOL isDir = NO; if (!([[NSFileManager defaultManager] fileExistsAtPath:DBDir isDirectory:&isDir] && isDir)) { [[NSFileManager defaultManager] createDirectoryAtPath:DBDir withIntermediateDirectories :YES attributes :nil error :nil]; } NSString* DBPath = [DBDir stringByAppendingPathComponent:DB_NAME]; // 设置数据库路径,包含了数据库升级的逻辑 __weak __typeof(self)weakSelf = self; [[YTBaseDBManager sharedInstance] startUpgradeDBWithPath:DBPath newDBVersion:DB_Version createTableBlock:^{ __strong __typeof(weakSelf)strongSelf = weakSelf; [strongSelf initTables]; }]; } return self;}// 初始化数据表- (void)initTables { // TODO: 在这里做初始化表的操作 [VideoUploadModel createTableIfNotExists];}@end |
请发表评论