Merhabalar bu yazımda daha önceki Core Data yazılarımda bahsettiğim ve database üzerinden karşılaştırma yapıp sonuç fetch ettiğimiz filter sınıfı NSPredicate ‘yi aynı zamanda NSObject sınıfından türeyen her sınıf yapısı için filtreleme işlemini nasıl yaparız bunun örneğini vereceğim.
NSPredicate sınıfı sadece Core Data için değil tüm nesneler için kontrol yapabilir. Böylelikle sınıf arraylarını filtreleme işlemi yapabilir, sınıfın değişkenlerine göre çıktı elde edebiliriz.
Aşağıdaki yazdığım Person sınıf örneğini inceleyebilirsiniz.
class Person: NSObject { let firstName: String let lastName: String let age: Int init(firstName: String, lastName: String, age: Int) { self.firstName = firstName self.lastName = lastName self.age = age } } let kenan = Person(firstName: "Kenan", lastName: "Atmaca", age: 21) let ayse = Person(firstName: "Ayse", lastName: "Kara", age: 24) let ahmet = Person(firstName: "Ahmet", lastName: "Kara", age: 25) let people = [kenan,ayse,ahmet] let predicate = NSPredicate(format: "lastName == %@", "Kara") let result = (people as NSArray).filtered(using: predicate) (result.first as! Person).firstName // Ayse
Örnekte Person nesnelerinden soyadı “Kara” olanları result değişkenine geri döndürmüş olduk. Bilgileri almak için tekrar Person sınfına çevirip ilk eşleşen değerin adını yazdırmış olduk.
Not: Swift Array sınıfında predicate filter fonksiyonu bulunmaz bu yüzden arrayi NSArray‘a çevirmemiz gerekir aksi halde predicate işlemini kullanamassınız.