SWIFT 3-Prädikat für NSArray funktioniert nicht richtig mit den zahlen

Bin ich mit dem lernen von Prädikaten für die Filterung. Ich fand ein tutorial, aber ein Aspekt ist nicht für mich arbeiten im Swift-3. Hier einige spezifische 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

Alle 4 kompilieren, aber die letzten 2 produzieren keine Ergebnisse, obwohl ich einen Fall, wo Alter = 33. Hier ist der test, den kompletten test-code aus dem 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)
//["Charlie Smith"]

(people as NSArray).filtered(using: ageIs33Predicate02)
//["Charlie Smith"]

(people as NSArray).filtered(using: ageIs33Predicate03)
//[]

(people as NSArray).filtered(using: ageIs33Predicate04)
// []

Was mache ich falsch? Danke.

InformationsquelleAutor Frederic | 2016-09-30

Schreibe einen Kommentar