- 维护版本升级(如:数据库升级,数据迁移,数据初始化等)
- 跨版本升级(增量升级)
- 通过UserDefault保存当前版本,key=
com.version.app.currentVersionKey
Version
必须实现VersionProtocal
协议,通过upgrade
实现升级逻辑Version
必须声明版本号- 新版本号必须大于旧版本号
- 旧版本确定后不能改动
- 每个版本的版本号必须不一样,如果升级逻辑比较多,可以拆分成多个版本来升级
- VersionProtocol的版本号可以不与App的版本号一致
pod 'UpgradeManager', '~> 1.0'
github "zhengbomo/UpgradeManager"
- 在应用启动(
application:willFinishLaunchingWithOptions:
)的时候执行
// 版本号按从小到大顺序
let versions: [VersionProtocol] = [
InitVersion(),
AddColumnVersion(),
DataMigrationVersion()
]
// 设置版本号
UpgradeManager.shared.setVersion(versions: versions)
// 更新版本
UpgradeManager.shared.upgrade()
versions随着版本迭代逐渐增多
- Version的定义
import UpgradeManager
class AddNameColumnVersion: VersionProtocol {
var version: Int {
// 新版本号必须大于旧版本号
return 2
}
func upgrade() {
DbService.addNameColumn()
}
}