迁移

管理需要在 iOS 应用程序版本更新时运行一次的代码块。 这可能包括从数据规范化到错误修复的任何内容。

这是一个 Swift 包,可以替代 MTMigration 的基本功能。 如果您之前使用过 MTMigration 的 migrateToVersion 功能,则可以使用此 Swift 包代替。 注意:这不是一个完整的替代方案,因为它缺少 MTMigration 的 applicationUpdateBlockmigrateToBuild 功能,我从来没有需要过这些功能。

安装

使用 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.21.1 -> 1.2 等。

版本号超过你的应用程序中指定的版本将不会运行。 例如,如果你的 *-info.plist 文件指定 1.2 作为应用程序的版本号,并且你尝试迁移到 1.3,则迁移将不会运行。

代码块在运行迁移的线程上执行。 应相应地考虑后台/前台情况。

贡献

此库不处理一些更复杂的迁移情况,如果您从自己的应用程序中遇到复杂的用例,请添加它并提交 pull request。 务必添加测试用例。

贡献者

MTMigration