蜡翼 5.0.1

蜡翼 5.0.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最新版本2020 年 5 月
SPM支持 SPM

Jan Gorman 维护。



蜡翼 5.0.1

Build Status codecov Carthage compatible SPM Version License Platform

蜡翼

iOS 版本迁移在 Swift 中。在更改数据或执行任何其他类型的更新时,您需要确保运行所有相关迁移的顺序,并且只运行一次。Waxwing 允许您做到这一点。

要求

  • Swift 5
  • iOS 8+

安装

CocoaPods

Waxwing 通过 CocoaPods 提供。要安装,请将以下行添加到您的 Podfile 中。

pod "Waxwing"

Carthage

如果您不喜欢 CocoaPods,您可以通过 Carthage 添加依赖项,或者将 Waxwing.swift 添加到您的项目中。

Swift 包管理器

您可以使用 Swift 包管理器,通过添加它到您的 Package.swift 文件来安装 Waxwing

import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    targets: [],
    dependencies: [
        .Package(url: "https://github.com/JanGorman/Waxwing", majorVersion: 5),
    ]
)

使用

运行您的迁移有两种方法,即通过闭包或通过 OperationQueue

import Waxwing



let waxwing = Waxwing(bundle: .main, defaults: .standard)

waxwing.migrateToVersion("0.9") {
  firstMigrationCall()
  secondMigrationCall()
   
}

或者

import Waxwing


let waxwing = Waxwing()

Waxwing.migrateToVersion("0.9", [FirstMigrationClass(), SecondMigrationClass()])

请注意,基于闭包的迁移是从创建它们的线程上运行的。需要在主线程上运行的所有内容,例如通知用户此版本引入的变化,需要明确地在主线程上调用该方法。

import Waxwing

DispatchQueue.global().async {
  let waxwing = Waxwing(bundle: .main, defaults: .standard)
  waxwing.migrateToVersion("0.9") {
    DispatchQueue.main.async {
      // Some alert that we're done updating / what's new in this version of the app
    }
  }
}

基于 OperationQueue 的迁移始终在其自己的队列上运行,因此相同的警告也适用。另外请注意,如果队列中的任何迁移依赖于另一个已运行的迁移,您需要明确地添加此依赖项。Operation 通过 addDependency() 方法使这变得非常简单。

您可以添加任何数量的迁移。它们将只会运行一次。

进度

Waxwing 内置了对 Progress 的支持。由于使用闭包方法运行的操作数量无法确定,因此它只报告总计数为 1。如果您使用操作,单元计数将匹配迁移的数量。

import Waxwing

func migrate() {
  let progress = Progress(totalUnitCount: 1)
  progress.becomeCurrent(withPendingUnitCount: 1)
  _ = progress.observe(\.fractionCompleted, options: [.new]) { progress, _ in
    // e.g. Update progress indicator, remember to do this on the main thread
  }
  
  waxwing.migrateToVersion("0.8", migrations: [migration1, migration2, migration3])
}

关于 Progress 如何工作,我推荐阅读 Ole Begemann 的这篇文章:这篇}

作者

Jan Gorman

许可证

Waxwing 可在 MIT 许可证下使用。更多信息请参阅 LICENSE 文件。