İçeriğe geç

Realm migration işlemi

Merhabalar bu yazımda Realm ile veritabanlarının önemli işlemlerinden migration (birleştirme) işleminin nasıl yapıldığını paylaşacağım.

Migration işlemini açıklayacak olursam. İlk önce tasarladığınız veri tabanı modeline bir süre sonra eklemeler veya var olan özelliklerin isim, ilişki vs değişikliklerini yapmanız demektir. Bu işlem veritabanı ve kullanıcı deneyimi için oldukça önemli. Yanlış yapılan ve güncellenen migration işlemleri kullanıcıların uygulamayı kullanamamasına ve crash işleminin sonuçlanmasına sebeb olabilir. Bu yüzden kullandığımız veritabanı sistemlerinde migration işleminin esnek ve kolay olmasını isteriz.

Realm veritabanıda tasarlandığı yapı itibari ile migration işlemide oldukça sancısız yazılabilinmekte.

Aşağıda yazdığım örnek ile basit bir migration işlemi gerçekleştirdik.

class Item: Object {
    @objc dynamic var id = 0
    @objc dynamic var name = ""
    @objc dynamic var surname = ""
    @objc dynamic var token = "" //*
    
    override class func primaryKey() -> String? {
        return "id"
    }
}

Daha önceden olmayan token nesnesini aşağıdaki Realm yardımcı fonksiyonu içerisinde ekleme ve olan değişken isim değişikliği yapıyoruz.

  let config = Realm.Configuration(
            schemaVersion: 1,
            migrationBlock: { migration, oldSchemaVersion in
                if (oldSchemaVersion < 1) {
                    migration.enumerateObjects(ofType: Item.className(), { (_, newValue) in
                        newValue!["token"] = ""
                    })
                    migration.renameProperty(onType: Item.className(), from: "no", to: "id")
                }
        })

        Realm.Configuration.defaultConfiguration = config

        do {
            db = try Realm()
        } catch let error as NSError {
            print(error)
        }

Buradaki dikkat etmemiz gereken nokta her migration işleminde schemeVersion sayısını artırmanız olacaktır. Aksi halde migration işlemi gerçekleşmez uygulama crash olur.

Kategori:Realm

Bu yazı yorumlara kapalı.

© 2025 Kenan Atmaca