Core Data: Veri Düzenleme
Core Data ile depoladığınız verileri düzenlemeyi ve silmeyi öğrenin.
Merhaba TurkishKit okuyucuları. Bir önceki yazımızda sizlerle Core Data üzerinde veri yazıp okuyabilmeyi öğrenmiştik. Bir Veri tabanı akla gelindiğinde ünlü kelime kullanılır, CRUD(Create, Read, Update, Delete). Fark ettiğiniz üzere Update ve Delete işlemlerini yapmadık. Bu eksiklerimizi varolan projemiz üzerinde uygulayalım.
Listemize Swipe Özelliği Ekleme
Önceki yazımıda başladığımız projeye ulaşmak için:
Öncelikle listemiz an itibari ile kaydırılabilir değil. Biz bu listeye sol ve sağ kaydırılabilir aksiyonlar ekleyeceğiz. Bu sayede iki operasyonu basit bir yere taşıyabileceğiz.
Bunun için 3 fonksiyon ekleyeceğiz.
İlk fonksiyonumuz canEditRowAt ve bize listemizin kaydırılıp kaydırılamayacağını belirliyor.
İkinci fonksiyonumuz trailingSwipeActionsConfigurationForRowAt ve bize sola kaydırdığımızda sağ kısımda çıkacak aksiyonu soruyor. Buna Delete adını vereceğimiz bir UIContextualAction aksiyonu vereceğiz ve içinde silme fonksiyonumuzu çağıracağız.
Burada önemli olan şey adımlarınız. Bir veri silerken bu sırayı takip etmez iseniz hata almanız muhtemeldir.
- Veritabanından itemi silin
- Array’ den objeyi çıkarın
- listeden o hücreyi çıkarın
- listeyi yenileyin.
Üçüncü ve son fonksiyonumuz ise leadingSwipeActionsConfigurationForRowAt adında ve bu bize sağa kaydırdığımızda solda duracak aksiyonu verecek. Buraya da Update işlemini koyacağız.
Burada da gördüğünüz üzere önce update edip daha sonra listeyi yenileme yapıyoruz. Bu sayede listemiz de güncel kalıyor.
Silme Aksiyonunu Uygulayalım
Şimdi geldik removeItem fonksiyonuna. Gördüğünüz üzere fonksiyonumuz silinecek objeyi alıyor.
Bu objeyi aldıktan sonra CoreData’nın vazgeçilmezi olan yönetilebilir içeriğe(managedContext) erişiyoruz. Sonrasında bir istek(request) yazıyoruz ve objeyi veritabanında bulmak için bir tahmin üretiyoruz. Bu tahmin bize eşleşen objeleri veriyor. Bir obje aradığımız için filtreyi basit tutuyoruz ve isim ile eşleşeni arıyoruz. “item = %@”, listItem dediğimizde bu obje isminin eşleşeceği bir filtre yapmış oluyoruz. (Aynı isimli iki tane itemin olmadığını varsayıyoruz. Böyle bir durumda da result[0] ile ilk sonucu bulabilirsiniz.)
Daha sonrasında sonuçtan objemizi seçip silme emri vereceğiz.
Veriyi Güncelleme Aksiyonunu Uygulayalım
Silme ile aynı adımları uygulayıp ilk önce filtreleri yapıyoruz. Daha sonra Ürün Ekleme’de kullandığımız UIAlertController’ı kopyalayıp modifiye ediyoruz. Bu sefer yazacağımız metin eski metini güncelleyecek ve metnimiz değişmiş olacak. Sonra veritabanından güncel verileri çekerek işlemi tamamlamış olacağız.
Ve uygulamamız tamam. Gelin ne yaptığımızı görelim.
Bir yazımızın daha sonuna geldik. Bir önceki repomuzun aynısında değişiklikleri görebilirsiniz. Değişikliği görmek için branch:master yazan yere tıklayıp “cd2” branşını seçerseniz görebilirsiniz. Hepinize keyifli kodlamalar.