With SwiftyVersionTracker, you can track which versions previously installed. Convenient methods are also available.
let tracker = try! SwiftyVersionTracker<SwiftyVersionIntInt>()
if tracker.isFirstLaunchEver {
// do something
// e.g. shows welcome screen
}
if tracker.isFirstLaunchForVersion {
// do something
// e.g. shows release note
}
if tracker.last?.major == 1 {
// do something
// e.g. migrate database
}
- Track which versions of your application previously installed
- Support any type of versioning literals with Swift Generics
- Most of use case is covered out of the box with
SwiftyVersionIntInt
Japanese is here.
isFirstLaunchEver: Bool
returns whether it's first launch or not.isFirstLaunchForVersion: Bool
returns whether it's first launch for version or not.isFirstLaunchForBuild: Bool
returns whether it's first launch for build or not.current: T
represents current version.previous: T?
represents previously installed version. This value never change until different version will be launched.first: T
represents first version user installed.last: T?
represents a version which last launched.history: [T]
represents all the history of installed versions.
SwiftyVersionTracker
is build on Protocol Oriented Programming. We defined SwiftyVersion
as protocol, so you can use SwiftyVersionTracker
with any type of versioning rules and literals.
Before using SwiftyVersionTracker
, you must implement class or struct which comfirms to SwiftyVersion
. SwiftyVersion
is simple protocol as described below.
public protocol SwiftyVersion: Equatable {
associatedtype VersionLetters: Comparable
associatedtype BuildLetters: Comparable
var major: VersionLetters { get }
var minor: VersionLetters { get }
var release: VersionLetters { get }
var build: BuildLetters { get }
init(versionString: String?, buildString: String?) throws
}
If you need more explanation about software versioning, see Wikipedia. 😃
OK, We know you wanna just using SwiftyVersionTracker
, without any effort as possible, and most of applications using just numbers something like version: 1.2.3, build: 10
. For you, we implemented SwiftyVersionIntInt
which supports versioning rule using Integers only. 😉
let version = try! SwiftyVersionIntInt(versionString: "1.2.3", buildString: "4")
XCTAssertEqual(version.major, 1)
XCTAssertEqual(version.minor, 2)
XCTAssertEqual(version.release, 3)
XCTAssertEqual(version.build, 4)
Finally, it's time to use SwiftyVersionTracker
!! You have two ways to initialize SwiftyVersionTracker
.
First way is with bundle, and this is the best way for most applications. Initialize SwiftyVersionTracker
without parameters, initializer will try initialize YourVersion: SwiftyVersion
with bundle version strings. Bundle version strings are defined in target general settings in Xcode, just like below.
And example code is below.
let tracker = try! SwiftyVersionTracker<YourVersion>()
Looks pretty cool, huh? 😆
If you have version strings in database, code or something like that, initialize SwiftyVersionTracker
with parameters versionString
and buildString
.
Example below.
let tracker = try! SwiftyVersionTracker<YourVersion>(versionString: "1.2.3", buildString: "a123")
If you wanna track versions even within App Extension, you can specify userDefaults
parameter for sharing tracking data between application and extension.
- iOS 8.0+
- Xcode 9.3+
SwiftyVersionTracker is available through CocoaPods and Carthage.
To install, simply add the following line to your Podfile
:
platform :ios, '11.0'
use_frameworks!
pod 'SwiftyVersionTracker'
To integrate NowCastMapView into your Xcode project using Carthage, specify it in your Cartfile
:
github "notohiro/SwiftyVersionTracker"
Run carthage update
to build the framework and drag the built SwiftyVersionTracker.framework
into your Xcode project.
Don't forget ⭐️, and if you like this, thanks donation for coffee. ☕️
SwiftyVersionTracker is available under the MIT license. See the LICENSE file for more info.