kobasaです(´ω`*)
今回はマイグレーションについて調べていました。
マイグレーションの記述はDBのカラム名などを変更するまでは必要でなく、
変更が発生してから記述すれば良いようです。
マイグレーションの記述はAppDelegate
ファイルのdidFinishLaunchingWithOptions
内に記述します。(RealmSwift
のimport
必要)
let config = Realm.Configuration(
schemaVersion: 1,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
//変更内容を記述
}
})
Realm.Configuration.defaultConfiguration = config
let realm = try! Realm()
変更を加える度にschemaVersion
の値を増やしていきます。
何も変更を加えていない状態なら0なので初めての変更なら1を記述。
変更するのは「schemaVersion: 1,
」と「oldSchemaVersion < 1
」の部分。
カラムを追加・削除しただけの場合は変更内容の記述は不要みたいです。
nameをfullNameに変更したり、firstNameとlastNameを統合した場合など
保存しているデータを削除せずに活かす場合は記述が必要になります。
// nameをfullNameに変更
migration.renameProperty(onType: Person.className(), from: "name", to: "fullName")
// firstNameとlastNameをfullNameに統合
migration.enumerateObjects(ofType: Person.className()) { oldObject, newObject in
let firstName = oldObject!["firstName"] as! String
let lastName = oldObject!["lastName"] as! String
newObject!["fullName"] = "\(firstName) \(lastName)"
}
カラム名変更のようなシンプルな変更ならこれだけで良さそうです。
アソシエーションなどが絡んでくると他の記述が必要になってくるのかも。
コメント