Kiedy filtrowanie tablicę klas niestandardowych Swift za pomocą predykatu pojawia się błąd:Korzystanie predykaty na Array obiektów w Swift zwraca błąd
*** NSForwarding: warning: object 0x78ed21a0 of class 'Plantivo1_6.Seed' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[Plantivo1_6.Seed valueForKey:]
Jeśli dobrze pamiętam to będzie działać w Objective-C. Jaki jest mój błąd?
let names = ["Tom","Mike","Marc"]
println(names)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", "om")
let array = (names as NSArray).filteredArrayUsingPredicate(searchPredicate)
println(array)
println()
let mySeed1 = Seed() // Seed is a class with a `culture` String property
let mySeed2 = Seed()
let mySeed3 = Seed()
mySeed1.culture = "Tom"
mySeed2.culture = "Mike"
mySeed3.culture = "Marc"
let mySeeds = [mySeed1,mySeed2,mySeed3]
println(mySeeds)
let searchPredicate1 = NSPredicate(format: "SELF.culture CONTAINS[c] %@", "om")
let array1 = (mySeeds as NSArray).filteredArrayUsingPredicate(searchPredicate1)
println(array1)
Nie, to nie ... Jak ktoś ma wiedzieć, że ... –
Wprowadzono kilka zmian, czy to wyjaśnić to lepiej? Tak właśnie działa NSPredicate wewnętrznie, aby przekonwertować ciąg znaków na klucz, który może być użyty do uzyskania wartości z instancji klasy. – jperl