Ich versuche derzeit, meine Tabellenansicht nach den Wörtern auf den Etiketten in jeder Zeile zu sortieren. Jede Reihe hat 3 Dinge: eine Farbe, einen Tiertyp und den Namen des Tieres. Ich habe eine bestimmte Reihenfolge, wie ich die Tabelle organisieren möchte, aber abhängig davon, wie die Elemente geladen werden, kann die Reihenfolge der Zeilen alles sein (das Problem).Sortieren von Tabellenzeilen nach mehreren Arrays
Ich möchte diese Tabellen nach Farbe durch dieses Array sortieren: colorArray = ["red", "blue", "yellow", "green", "orange", "purple"]
. Dies bedeutet, dass alle roten Tiere zuerst sein werden, während alle grünen in der Mitte usw. sind. Das erste Problem ist, dass ich nicht weiß, wie man ein Array nach einem anderen String-Array sortiert. Zweites Problem ist, dass ich die anderen zwei Arrays (Tier-und Tiernamen) brauche, um ihre Reihenfolge in Übereinstimmung mit der Farbmatrix zu ändern, damit das richtige Tier und ihre Namen mit der richtigen Farbe sein werden.
Beispiel: wenn die Farbe in Array geladen werden, wie blue, green, orange, red
und das Tier wird in Array wie dog, cow, cat, monkey
geladen, werde ich dann brauchen, dann müssen diese beiden Arrays in red, blue, green orange
monkey, dog, cow, cat
und sortiert werden. Das ist so, dass alle Tiere die richtige Farbe haben. Wie behebe ich diese beiden Probleme? Ich habe meine aktuellen Code am unteren Rand kopiert:
func loadAnimals() {
let animalQuery = PFQuery(className: "Animals")
animalQuery.whereKey("userID", equalTo: PFUser.current()?.objectId! ?? String()) //getting which user
animalQuery.limit = 10
animalQuery.findObjectsInBackground { (objects, error) in
if error == nil {
self.colorArray.removeAll(keepingCapacity: false)
self.animalNameArray.removeAll(keepingCapacity: false)
self.animalTypeArray.removeAll(keepingCapacity: false)
for object in objects! {
self.colorArray.append(object.value(forKey: "colorType") as! String) // add data to arrays
self.animalNameArray.append(object.value(forKey: "animalName") as! String) // add data to arrays
self.animalTypeArray.append(object.value(forKey: "animalType") as! String) // add data to arrays
}
self.tableView.reloadData()
} else {
print(error?.localizedDescription ?? String())
}
}
}
//places colors in rows
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! AnimalCell //connects to color cell
//Adds the animal information in the cells
cell.colorType.text = colorArray[indexPath.row]
cell.animalName.text = animalNameArray[indexPath.row]
cell.animalType.text = animalTypeArray[indexPath.row]
return cell
}
Verwenden ** ** eine benutzerdefinierte Struktur oder Klasse anstatt mehrere Arrays. Es macht das Leben viel einfacher und löst Ihr Problem kolllateral. Verwenden Sie für die Farben einen Index, um eine benutzerdefinierte Reihenfolge zu erhalten. – vadian