管理需要在 iOS 应用程序版本更新时运行一次的代码块。 这可能包括从数据规范化到错误修复的任何内容。
这是一个 Swift 包,可以替代 MTMigration 的基本功能。 如果您之前使用过 MTMigration 的 migrateToVersion
功能,则可以使用此 Swift 包代替。 注意:这不是一个完整的替代方案,因为它缺少 MTMigration 的 applicationUpdateBlock
和 migrateToBuild
功能,我从来没有需要过这些功能。
使用 Xcode,添加一个包依赖,URL 为 "https://github.com/Clafou/Migration.git"
添加 import Migration
,然后使用版本号和一个代码块调用 migrateToVersion
,Migration 将确保该代码块仅在该版本中运行一次。
Migration.migrateToVersion("1.1") {
// Your migration code here
}
您需要在您的应用程序委托或类似的地方运行此代码。
因为 Migration 会检查你的 *-info.plist 文件以获取你的实际版本号,并跟踪上次的迁移,它会迁移所有未迁移的中间代码块。 例如,假设您有以下迁移:
Migration.migrateToVersion("0.9") {
// Some 0.9 stuff
}
Migration.migrateToVersion("1.0") {
// Some 1.0 stuff
}
如果用户在版本 0.8
,跳过了 0.9
,并升级到 1.0
,那么 0.9
*和* 1.0
的代码块都将运行。
为了调试/测试的目的,您可以调用 reset
来清除上次记录的迁移,从而导致所有迁移从头开始运行
Migration.reset()
Migration 假设版本号以逻辑方式递增,即 1.0.1
-> 1.0.2
,1.1
-> 1.2
等。
版本号超过你的应用程序中指定的版本将不会运行。 例如,如果你的 *-info.plist 文件指定 1.2
作为应用程序的版本号,并且你尝试迁移到 1.3
,则迁移将不会运行。
代码块在运行迁移的线程上执行。 应相应地考虑后台/前台情况。
此库不处理一些更复杂的迁移情况,如果您从自己的应用程序中遇到复杂的用例,请添加它并提交 pull request。 务必添加测试用例。
MTMigration