Realm Swiftのマイグレーション方法
意外と簡単でした!
バージョンは2.0.3です。
Realmは自動的に新しく追加されたプロパティと、削除されたプロパティを認識します。
そしてディスク上のスキーマを自動的にアップデートします。
とあるので、プロパティの消去と追加だけなら以下だけでokです。
schemaVersionというのはデフォルトでは0が入っているので今回は1を指定します。
let config = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in if (oldSchemaVersion < 1) { } }) Realm.Configuration.defaultConfiguration = config let realm = try! Realm()
古いプロパティのデータを新しいプロパティに入れたい場合はこんな感じで書きます。
Realm.Configuration.defaultConfiguration = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in if (oldSchemaVersion < 1) { migration.enumerate(Person.className()) { oldObject, newObject in let firstName = oldObject!["firstName"] as! String let lastName = oldObject!["lastName"] as! String newObject!["fullName"] = "\(firstName) \(lastName)" } } }) Realm.Configuration.defaultConfiguration = config let realm = try! Realm()
そして、マイグレーションが終わればRealmのconfigurationで
先ほど指定したスキーマのバージョンをしてあげれば正常に動くはずです。
Realm.Configuration( fileURL: url, readOnly: false, schemaVersion:1)