Ich habe zwei Klassen wie folgt:Suche Zeichenfolge in NSArray von benutzerdefinierten Objekt mit NSPredicate
class City : NSObject{
var header:String? = nil
var areas:NSMutableArray? = nil //Contain array of Area
//Return array of City objects
class func generate(cityCount:NSInteger) -> NSMutableArray{...}
}
und
class Area : NSObject{
var title:String? = nil
var address:String? = nil
}
//Return array of Area objects
class func generate(areaCount:NSInteger) -> NSMutableArray {...}
Nun, ich Array von Stadt haben wie dies in meinem Viewcontroller erklärte:
var cities = City.generate(200)
und wenn ich die Kopfzeile innerhalb mit NSPredicate suchen, funktioniert es perfekt
Aber wenn ich suche cities->areas->address
(Ich möchte Adresse suchen). Es funktioniert nicht. Es gibt immer 0 Objekt zurück. Hier ist, was ich versuche:
let pred = NSPredicate(format: "SELF.areas.address CONTAINS %@",searchString) //name
let filteredCities = (self.cities as NSArray).filteredArrayUsingPredicate(pred)
EDIT
Ich brauche nur den Bereich Objekt, das passende Adresse enthalten. Ich habe versucht:
let pred = NSPredicate(format: "ANY areas.address CONTAINS %@",searchString)
Dies ist die Stadt Objekt mit allen Bereichen Objekt gibt.
Vielen Dank im Voraus.
Hallo, Vielen Dank für Ihre Antwort, aber es stürzt die App: *** Beenden App aufgrund nicht abgefangener Ausnahme ** 'NSInvalidArgumentException', Grund: 'Kann nicht die Formatzeichenfolge parsen "SELF Bereiche.Adresse CONTAINS % @ "'** –
Überprüfen Sie meine Ed es habe ich 'ANY' verwendet –
Edited. Es filtert das Stadtobjekt und kehrt zurück, wenn irgendein Gebiet in der Stadt das gesamte Stadtobjekt zurückgibt. –