管理 iOS 应用程序版本更新时需要一次性运行的代码块。这可以是数据规范化例程、"这个版本的新功能" 屏幕,或者是错误修复。
MTMigration 可以通过两种方式之一进行安装
pod "MTMigration"
添加到您的 Podfile 中,如有必要,使用:#import <MTMigration/MTMigration.h>
导入。MTMigration.{h,m}
添加到您的项目中,如有必要,使用:#import "MTMigration.h"
导入。如果您需要一个每当应用程序版本更改时运行的结构,请将该结构传递给 applicationUpdateBlock:
方法。
[MTMigration applicationUpdateBlock:^{
[metrics resetStats];
}];
如果一个结构是特定于版本的,请使用 migrateToVersion:block:
,MTMigration 将确保该代码块仅针对该版本运行一次。
[MTMigration migrateToVersion:@"1.1" block:^{
[newness presentNewness];
}];
您应该在应用程序代理或类似位置运行此代码。
还有并行方法 migrateToBuild:block:
。
因为 MTMigration 检查您的 *-info.plist 文件中的实际版本号,并跟踪上次迁移,所以它会迁移所有未迁移的结构。例如,假设您有以下迁移
[MTMigration migrateToVersion:@"0.9" block:^{
// Some 0.9 stuff
}];
[MTMigration migrateToVersion:@"1.0" block:^{
// Some 1.0 stuff
}];
如果一个用户处于 0.8
版本,跳过 0.9
并升级到 1.0
,则将运行 0.9
和 1.0
结构。
为了调试/测试目的,您可以调用 reset
来清除 MTMigration 记忆中的最后一次迁移,从而使所有迁移从开始运行
[MTMigration reset];
MTMigration 假设版本号以合理的方式进行递增,即 1.0.1
-> 1.0.2
,1.1
-> 1.2
等。
大于您应用程序中指定版本的版本号不会运行。例如,如果您的 *-info.plist 文件指定 1.2
作为应用程序的版本号,并且您尝试迁移到 1.3
,则迁移将不会运行。
结构在运行迁移的线程上执行。应相应考虑后台/前台情况。
此库未处理一些更复杂的迁移情况,如果您在自己的应用程序中发现了一些复杂用例,请添加并提交拉取请求。务必添加测试用例。