🐱
特定のSchemeのときにのみ、プログラムを実行させる(Xcode, Swift)
概要
- Schemeの切り替えによって、特定のプログラムのみ実行させるようなことをしたい。
- 具体的にはSchemeが
FlashCardsTooling
のとき、サンプルのrealmファイルを作成するようなことがしたい。 - 加えてシュミレーターで実行時のみ実行するようにする。
- 具体的にはSchemeが
実装
プロジェクト設定
- 下記の通りフラグを設定する。
Tools.swift
- サンプルのrealmファイルを作成するための関数。
- 概要の条件の場合にのみ、realmファイルを作成させます。
struct Tools {
// (省略)
static func runIfNeeded() {
guard ProcessInfo.processInfo.environment["SIMULATOR_UDID"] != "", // シュミレーター上で動いていないならreturn
ProcessInfo.processInfo.environment["TOOLING"] == "1" else { // SchemeがFlashCardsToolingになっていないならreturn
return
}
createBundledWordsRealm()
createBundledSetsRealm()
exit(0)
}
}
AppDelegate.swift
- 先述の関数を
AppDelegate.swift
で下記のように呼びだします。
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
Tools.runIfNeeded()
Discussion