やってみたらなんとかなる

プログラミングをする上で調べたこととかやったこととか

[SwiftUI] RealmSwiftのMigrationについて

概要

長い間見て見ぬ振りしてきたRealmSwiftのMigration処理について触れることになりました。 とてもとても長い道のりでした。
もっと早くにやっておけばよかったと後悔してます。

解決策

まずは解決策から

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        RealmMigrator.setDefaultConfiguration()
        return true
    }
}

これを<アプリの名前>App.swiftに追記します。
次にRealmMigrator.swiftを作成して

import SwiftUI
import RealmSwift

enum RealmMigrator {
  static private func migrationBlock(
    migration: Migration,
    oldSchemaVersion: UInt64
  ) {
    if oldSchemaVersion < 1 {
        // 変更点とか書くところ
    }
  }

  static func setDefaultConfiguration() {
    let config = Realm.Configuration(
      schemaVersion: 1,
      migrationBlock: migrationBlock)
    Realm.Configuration.defaultConfiguration = config
  }
}

と書き込みます。以上です。
ここに辿り着くまでにほんとに時間かかった...

その他解説

執筆中...

関連記事

yuyuyu-331.hatenablog.com

yuyuyu-331.hatenablog.com

yuyuyu-331.hatenablog.com

まとめ(?)

  • Migrationは早めにやっておこう
  • いつの間にか消えていたAppDelegate.swift

参考にしたサイト