Core Data: Veri Depolama

Core Data ile uygulamalarınızdaki verileri depolamayı öğrenin.

Ege Sucu
TurkishKit
4 min readJun 28, 2019

--

Bir uygulama yazdığınız zaman uygulamanızın temel gereksinimleri karşılaması gerekir. Bunlar:

  • Kullanıcıların ihtiyaçlarından birini yerine getirebilmeli.
  • Kullanıcı verilerini tutabilmeli.
  • Kullanıcılara mükemmel bir deneyim sunmalı.

TurkishKit olarak şimdiye kadar mükemmel deneyim üzerine tasarım yazıları yazdık. İhtiyaç bazında ise sizlere kodlama üzerine yazılar yazarak çözüm sağlıyoruz. Peki verilerinizi nasıl depolayacaksınız?

Neden CoreData?

CoreData Apple’ın kullandığı ve Apple cihazları için en stabil çalışan veritabanı çözümüdür. Bunun önemli yanı sizi 3. parti kütüphanelerden kurtarmasıdır. Ayrıca yeni bir sürüm geldiğinde bu kütüphanelerin güncellenmesini beklemeniz gerekir. Bu da yenilikleri kullanıcılara geç ulaştırmanız anlamına gelebilir.

Sistemi Oluşturma

Öncelikle bir uygulamayı CoreData ile yaratmamız gerekli. Bu sayede Xcode bize girişte gerekli dosyaları hazır olarak sunacak. Bunun için yeni bir proje açıyoruz. Bu projemiz için Single View yapısını seçiyoruz. Projeye isim verirken aşağıda yer alan “Use Core Data” yazısının yanında yer alan kutuyu işaretlemeyi unutmuyoruz.

Bu aşamayı geçip projemizi istediğimiz yere kaydettikten sonra projemiz açılıyor. Burada ilk farkedeceğiniz şey “Shopping_List.xcdatamodel” isimli bir dosya bulunuyor olması.

Bu bizim veri modelimiz. Burada modelimizi oluşturup özelliklerini belirtebilir, sonra bu yapıyı çağırarak verilerimizi kullanabiliriz. Hemen bir model yaratalım. Modelimizin ismi “Bag” olsun.

Bunu yaratmak için alt menüde bulunan “Add Entity” butonuna tıklıyoruz. Sistem “Entity” isminde bir model yaratıyor. Çift tıklayarak ismini “Bag” olarak değiştiriyoruz. Şimdi modelimizin özelliklerini yaratmamız gerekiyor.

Bir Attribute yaratırken depolayabileceğiniz birçok seçenek bulunuyor. Bunlar:

  • Integer 16/32/64
  • String
  • Boolean
  • Date
  • Binary Date

olarak listelenir. Biz bugünkü örneğimiz için bir adet String kullanacağız. Yaratmak için Attributes sekmesi altındaki + butonunu kullanıyor ve bir attribute yaratıyoruz. Son hali aşağıdaki gibi oluyor:

Daha sonra Storyboard kısmına geliyoruz. Burada bir adet TableViewController ekliyoruz. TableView hakkında bilgi almak için geçmişte yazdığımız yazıyı inceleyebilirsin.

Table ile ne yapıyoruz?

  • Bir adet Navigation Controller ekliyoruz ve içerisine BarButtonItem koyuyoruz.
  • İçine bir adet hücre ekliyoruz, türünü basit tutuyoruz.

Artık Storyboard dosyası ile işimiz bitti. Kodlarımız ile bunu birleştirip tableView için altyapıyı kurduğumuzda geriye en önemli konu kalıyor.

Core Data Modelini Yaratma

Bu kısımda öncelikle modeli çağırıp üzerine bilgi yazabilmemiz gerekiyor. Bunun için önce CoreData’ yı import ediyoruz. İki adet önemli fonksiyonumuz olacak. Biri veritabanını okuyarak tabloyu dolduracak, öteki ise yeni yaratacağımız itemleri listeye ekleyecek. Bunlara createItem ve fetchItems diyoruz.

createItem(listItem: String)

Bu fonksiyonda Core Data içerisindeki veri tabanımıza veri ekleyeceğiz.

Burada ilk olarak güvenli bir şekilde AppDelegate’i çağırdık. Daha sonra bir managedContext yaratarak CoreData işlemi yapacağımızı belirttik. Sonrasında Entity ve modeli çağırdık. Böylece şu an veritabanı ile bağlantıyı kurduk.

Bundan sonra bir satır ile verimizi kaydediyoruz.

Burada modelimiz kendisine verdiğimiz String değerini alarak bunu veri tabanına kaydetti. Ancak henüz veritabanına bu değişikliği kaydetmesini söylemedik. Bu işlemi try catch bloku içinde yapıyoruz çünkü veriyi kaydederken hata alabiliriz.

Şimdi sırada fetchItems fonksiyonu var.

fetchItems

fetchItems fonksiyonunda benzeri bir kod ile başlayacağız. İlk önce Varolan Array’ in içini silip Core Data’ya ulaşacağız.

Daha sonra bir istekte(request) bulunacağız. Bu kısımda filtreleme de uygulayabilirsiniz ancak biz tüm kayıtlı verileri istediğimiz için filtre kullanmayacağız.

Sonrasında do catch içerisinde tüm verileri çekiyoruz, bu verilerin içindeki “item” değerlerini çekip array içerisine ekliyoruz. Son olarak tableview içerisindeki datayı yeniden yüklüyoruz. Bu sayede objelerimiz tabloya doluyor.

Bitirmeden Önce

Core Data’yı hazırladık. Ancak henüz uygulamamızda kullanmıyoruz. Bunun için + butonuna yarattığımız aksiyona geliyoruz. Burada bir popup çıkaracağız. Bu popup içerisinde kullanıcı bir değer girecek ve bunu eklediğinde createItem fonksiyonunu çağıracağız.

Son olarak verilerin app her açıldığında yenilenmesini istiyoruz. Bunun için viewWillAppear fonksiyonunu yaratıp içine fonksiyonu ekliyoruz.

Hepsi bu kadar. Gelin uygulama nasıl çalışıyor görelim.

Bu yazıda sizlerle Core Data üzerinden nasıl veri çekilip veri kaydedilebildiğini gösterdik. Uygulamanın kodlarına buradan erişebilirsiniz. Eğer sorularınız var ise bizlere yorum kısmından yazabilirsiniz. Keyifli kodlamalar 🙂.

Swift Öğrenin. Uygulama Geliştirin. Sınırların Ötesine Geçin.

Hem kod yazmaya yeni başlayanların hem de profesyonellerin rahatlıkla takip edebilecekleri 40 saatlik videolu eğitim ile Swift programlama dilini derinlemesine keşfedin. Eğitim boyunca karşılaşacağınız problemleri birebir online görüşmelerde çözün.

--

--