Vielen Dank für Ihre zukünftige Hilfe! Das ist mein Array:Sortieren nach Entfernung Swift 3
var malls: [Mall] = [
Mall(name:"yagey", distance:""),
Mall[name:"tigey", distance:"")
]
Wie kann ich Malls durch mall.distance sortieren?
let sortedMalls = malls.sorted { (mallOne, mallTwo) -> Bool in
return mallOne.distance < mallTwo.distance
}
: Das ist meine Tableview ist
Tableview
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! EateriesTableViewCell
let mall = mallToDisplayAt(indexPath: indexPath)
let mallLocate = CLLocation(latitude: mall.latitude, longitude: mall.longitude)
print (mallLocate)
let distanceInMeters = mallLocate.distance(from: coords)/1000
let distanceInMetersString = String(format: "%.1f", distanceInMeters)
for index in 0..<malls.count {
var mall = malls[index] // copy a mall value
mall.distance = distanceInMetersString // change the copy of mall
malls[index] = mall // put the updated mall back into the array
}
cell.distanceLabel.text = distanceInMetersString + "км"
malls.sort() { $0.distance < $1.distance }
print (mall.distance)
return cell
}
Warum sortieren Sie in TableViews CellForRowAt? Es wird jedes Mal ausgeführt, wenn eine Zeile sichtbar wird. Das ist nicht nötig. Und auch Sie verwiesen Mall aus Malls - vorausgesetzt, dass ist, was mallToDisplayAt tut, vor der Sortierung, die Ihnen den Wert aus dem unsortierten Array zum ersten Mal, wenn es aufgerufen wird. Schließlich wird der Abstand in string gespeichert, um einen genauen Vergleich während der Sortierung zu erhalten, müssten Sie den float/int-Wert während der Sortierung anstelle der Zeichenkette vergleichen, da der Zeichenkettenvergleich char mit char vergleicht (12 ist kleiner als 2, da das erste Zeichen ist) kleiner) –
Dies ist die vierte Frage, die Sie heute zum genau gleichen Problem gestellt haben. Hör auf. Bleib bei einer Frage. Ich habe dir gesagt, was du in deiner ersten Frage tun sollst. Wenn Sie Probleme haben, es zum Laufen zu bringen, bearbeiten Sie Ihre Frage, um Ihren neuen Code am Ende anzuzeigen und das Problem anzugeben, das Sie damit haben. –
Ich muss dir sagen, du scheinst über dir zu sein. Du verstehst keinen einfachen Ratschlag wie "mach die Location zu einer Immobilie". Wenn Sie immer noch die Grundlagen von Swift erlernen, werden Sie wahrscheinlich nicht in der Lage sein, etwas so Komplexes wie das Erstellen einer Tabellenansicht von Orten zu erhalten, die nach Entfernung zum Standort des Benutzers sortiert ist, bis Sie viel mehr lernen. –