İçeriğe geç

Realm generics işlemleri

Merhabalar bu yazımda Swift ile Generics yapısını kullanarak Realm için işlevsel fonksiyonlar yazacağız.

Şüphesiz Generics Swift dilinin en önemli konularından biri. Bu yüzden etkileşimli, esnek sınıflar,fonksiyonlar yazmak için bu konuya hakim olmak gerekli. Realm veritabanı işlemleri için yazdığımız fonksiyonlar ve bundan önceki örneklerimde verdiğim helper sınıf içerisinde önceden belirlediğimiz Modelin türünü kullanarak işlemleri yaptık. Bu işlemi genelleştirmek adına işin içine Generics katarsak çok daha konforlu bir yapıya erişmiş oluruz.

Aşağıda yazdığım basit bir generics helper sınıfını görebilirsiniz.

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

class RealmHelper {
    
    private var db:Realm!
    static let instance = RealmHelper()
    
    init() {
        do {
            db = try Realm()
        } catch let error as NSError {
            print(error)
        }
    }
    
    func addObj<T: Object>(obj: T) {
        try! db.write {
            db.add(obj, update: true)
        }
    }
    
    func getObject<T: Object>(object:T,key:Any) -> T? {
        return db.object(ofType: T.self, forPrimaryKey: key)
    }
    
    func deleteObj<T: Object>(object:T,key:Any) {
        try! db.write {
            let obj = getObject(object: object, key: key)
            db.delete(obj!)
        }
    }
    
    func getAllDb<T: Object>(object:T) -> Results<T> {
        return db.objects(T.self)
    }
}

 

 

 

 

Kategori:Realm

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca