Press ESC to close

Swift ile Realm Nasıl Kullanılır?

Merhaba arkadaşlar, bu yazımızda Realm nedir ve nasıl kullanılır bundan bahsedeceğiz. iOS ile mobile uygulama geliştirirken çoğu zaman kullanıcının cihazında bazı verileri saklamamız gerekebilir. Bu bazı zamanlarda çok basit veriler olurken bazı zamanlarda ise veritabanı kurmaya kadar gidebiliyor. Böyle zamanlarda Core Data, SQLite veya Realm kullanabilirsiniz. Realm hakkında daha fazla detay almak istiyorsanız buradan ulaşabilirsiniz.

Proje Planı

Yapacağımız örnek projede kullanıcılar izledikleri filmleri kaydedip, görebilecekler. Bunun yanı sıra ekledikleri filmleri silebilir veya güncelleyebilirler. Örnek çalışma görüntüsü aşağıdaki gibidir.

Bir film listesi sayfası ve listeye film ekleme sayfası gerekiyor. Listeye filme ekleme sayfasında ufak dokunuşlarla güncelleme sayfası haline de getireceğiz. Tasarım kısımlarını bir yana bırakıyorum çünkü projeye yazının sonunda ulaşabilirsiniz.

Model Oluşturma

Oluşturacağımız Real veritabanına bir model ekleyebilmek için veritabanına uygun bir model oluşturmamız lazım. Oluşturduğumuz model Object sınıfından kalıtım almalı. Object sınıfı Real podu ile beraber gelen bir sınıf ve Base Model oluşturuyor aslında. Sonrasında Movie sınıfımda hang özellikler olmasını istiyorsam bunları oluşturuyorum. Dynamic tipiyle tanımlıyorum çünkü veri bir yerde değiştiği zaman her tarafta hızlıca değişmesini istiyorum. Movie sınıfımda id, movieName ve createdDate oluşturmam yetiyor bana. Bu model içerisinde bir de Create fonksiyonu oluşturuyorum bu fonksiyon ile beraber film adını verdiğimizde size bir Movie sınıfı dönüyor.

import RealmSwift

class Movie: Object {
    @objc dynamic var id: String = UUID().uuidString
    @objc dynamic var movieName: String = ""
    @objc dynamic var createdData: Date = Date()
    
    static func create(movieName: String) -> Movie {
        let movie = Movie()
        movie.movieName = movieName
        return movie
    }
}

Listeleme

Listeleme işlemi aslında çok basit.  Realm veritabanına kaydedilen aynı objeler bir yerde tutuluyor ve siz bu kaydedilen objeleri almak istediğinizde Realm size Result içerisinde objelerinizi veriyor. Bu işlemden sonra objelerini kullanabilirsiniz.

lazy var movies: Results<Movie> = { self.realm.objects(Movie.self) }()

Ekleme ve Güncelleme

Realm.write fonksiyonu ile güncelleme ve ekleme işlemini aşağıdaki gibi yapabilirsiniz. Eğer güncelleme yapacaksanız Realm.write içerisinde dynamic bir şekilde gelen objenin ismini değiştirmeniz yeterli. Ekleme yapacaksanız ise realm.add() fonksiyonu ile aşağıdaki gibi yapabilirsiniz.

try! realm.write {
                if movie != nil {
                    movie?.movieName = tfMovieName.text ?? ""
                    navigationController?.popViewController(animated: true)
                } else {
                    let newMovie = Movie.create(movieName: tfMovieName.text ?? "")
                    realm.add(newMovie)
                    navigationController?.popViewController(animated: true)
                }
            }

Silme

Silme işlemi ekleme işlemine çok benziyor aralarındaki tek fark create fonksiyonu yerine delete fonksiyonunu kullanmak. Silmek istediğiniz objeyi delete fonksiyonu ile silebilirsiniz.

try! realm.write({
            realm.delete(movie)
        })

Aslında kullanımı çok basit ve kolay olmasına rağmen bir kaç ileri kısımları var. Oluşturduğumuz veritabanı nasıl migrate edilir gibi. Bu yazı çok uzun olmaması için diğer bir yazıda bunlardan bahsedeceğim. O yazıya buradan ulaşabilirsiniz. Bu yazıda oluşturduğumuz projeye ise buradan ulaşabilirsiniz.

Sorularınız olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir