I study the use of predicates for filtering. I found a tutorial, but one aspect does not work for me in Swift 3. Here is some specific code:
let ageIs33Predicate01 = NSPredicate(format: "age = 33") //THIS WORKS let ageIs33Predicate02 = NSPredicate(format: "%K = 33", "age") //THIS WORKS let ageIs33Predicate03 = NSPredicate(format: "%K = %@", "age","33") //THIS DOESN'T WORK let ageIs33Predicate04 = NSPredicate(format: "age = %@","33") //THIS DOESN'T WORK
All 4 compilation, but the last 2 do not give results, even if I have a case where age = 33. Here is the test test code from the tutorial:
import Foundation 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 } override var description: String { return "\(firstName) \(lastName)" } } let alice = Person(firstName: "Alice", lastName: "Smith", age: 24) let bob = Person(firstName: "Bob", lastName: "Jones", age: 27) let charlie = Person(firstName: "Charlie", lastName: "Smith", age: 33) let quentin = Person(firstName: "Quentin", lastName: "Alberts", age: 31) let people = [alice, bob, charlie, quentin] let ageIs33Predicate01 = NSPredicate(format: "age = 33") let ageIs33Predicate02 = NSPredicate(format: "%K = 33", "age") let ageIs33Predicate03 = NSPredicate(format: "%K = %@", "age","33") let ageIs33Predicate04 = NSPredicate(format: "age = %@","33") (people as NSArray).filtered(using: ageIs33Predicate01)
What am I doing wrong? Thanks.
source share