Ich muss eine Zeichenfolge auf der Grundlage einiger Logik verketten, aber ich kann nicht herausfinden, wie es geht.Swift verketten Zeichenfolge basierend auf verschiedenen Werten
Beispiel:
var filterString: String = ""
var hasFilter: Bool = false
if let catId = param["catid"] {
filterString += "cat_id=\(catId)"
hasFilter = true
}
if let subCatId = param["subcatid"] {
filterString += "sub_cat_id=\(subCatId)"
hasFilter = true
}
if let locationId = param["stateid"] {
filterString += "location_id=\(locationId)"
hasFilter = true
}
if hasFilter == true {
query.filters = filterString
}
Dies funktioniert nur, wenn ich ONE Filter in meiner Anfrage haben
ZB: query.filters = "location_id=4"
Aber wenn ich happend zwei oder mehr Filter meiner Anfrage haben wird zB:
query.filters = "location_id=4cat_id=3"
Wenn ich mehr als ein Filter, muss ich es mit einer UND Anweisung wie folgt trennen:
query.filters = "location_id=4 AND cat_id=3"
Aber ich kann nicht herausfinden, wie es zu tun, da ich weiß nie, was die Filterordnung wird kommen, oder wenn es auch ein oder mehrere Filter sein mit
bearbeiten beginnen
ich scheine es durch zum Laufen zu bringen:
var filterString: String = ""
var hasFilter: Bool = false
if let catId = param["catid"] {
filterString += "cat_id=\(catId)"
hasFilter = true
}
if let subCatId = param["subcatid"] {
if hasFilter == true {
filterString += " AND sub_cat_id=\(subCatId)"
} else {
filterString += "sub_cat_id=\(subCatId)"
}
hasFilter = true
}
if let locationId = param["stateid"] {
if hasFilter == true {
filterString += " AND location_id=\(locationId)"
} else {
filterString += "location_id=\(locationId)"
}
hasFilter = true
}
if hasFilter == true {
query.filters = filterString
}
Ist das ein NSPredicate für den Bau? In diesem Fall empfehle ich dringend, NSCompoundPredicate und PrädikatWithFormat zu verwenden: statt String-Manipulation. Hier sind einige Beispiele: http://StackOverflow.com/Questions/39027558/how-to-combine-multiple-nullable-nspredicates, http://StackOverflow.com/Questions/34202239/NPredicate-with-Multiple-arguments-and und Verhalten. –
@MartinR Nein, ich verwende dies: http://algolia.com/ – user2636197
Bitte posten Sie Ihre endgültige Lösung nicht als Bearbeitung Ihrer Frage. Wenn Sie Ihr eigenes Problem gelöst haben (auch wenn es nicht der beste Weg ist, es zu lösen), sollten Sie es als Antwort, nicht als Bearbeitung Ihrer Frage veröffentlichen. – rmaddy