İçeriğe geç

Swift 3 ile NSPredicate object karşılaştırma

Swift 3

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.

Tarih:SwiftSwift 3

Bu yazı yorumlara kapalı.

Copyright © 2020 Kenan Atmaca