Swift

Swift:Realmでのお手軽マイグレーション方法!!


今回はRealmでのマイグレーション方法をメモしていきます!

Realm基本的な使い方についてはこちらをご覧ください。

 

マイグレーションってなんぞや?

非常に説明しづらいです。

データベースの構造を新しくする・・・違うなぁ

migration(マイグレーション)の意味は『移譲』です。

これが真理なんでしょうが、とってもわかりづらいですね。

 

とりあえず、どういったときにマイグレーションをする必要があるのかを説明します。

 

マイグレーションっていつするの?

データベースの構造が変化したときにマイグレーションします。

例えば、

このように、Todoクラスにtitleカラムとcontentカラムがあったとします。

class Todo: Object {
    
    dynamic var title = ""
    dynamic var content = ""
    
}

 

 

でも開発しているうちに、
『日付もつけられるようにしたいなぁ』

と思ったとすると、

このようにdateというカラムを追加するはずです。

class Todo: Object {
    
    dynamic var title = ""
    dynamic var content = ""
        dynamic var date = ""
    
}

 

 

 

しかし、データベースはすでに

『titleカラムとcontentカラムを持つもの』

と設定されてしまっています。

そこに勝手に新しいカラムを足すとエラーが出て『マイグレーションしろや!』怒られてしまいます。

 

なので

『titleカラムとcontentカラムとdateカラムを持つもの』

に変更するときにマイグレーションをします。

 

 

マイグレーション方法

マイグレーション方法はいたってシンプルです。

AppDelegate.swift内の

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {}

内を編集していきます。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        let config = Realm.Configuration(
            
            schemaVersion: 1,
            
            
            migrationBlock: { migration, oldSchemaVersion in
                if (oldSchemaVersion < 1) {
                    
                }
        })
        
        Realm.Configuration.defaultConfiguration = config
        
       
        let realm = try! Realm()
        // Override point for customization after application launch.
                return true
    }

これがおそらく最もシンプルなマイグレーション方法です。

schemaVersion :1と記述されていますが、

このschemaVersionはデフォルトでは0に設定されています。

ここを1に設定することで新しくデータベースを更新することできます。

 

以上でございます。


ABOUT ME
ささお
3年目iOSエンジニア。 スタートアップで働いておりやす。 プログラミングスクールとエンジニアのキャリアを考えたい。 作ったアプリ - https://apps.apple.com/us/app/loverprofile/id1463563845?l=ja&ls=1