Ich versuche, die Ergebnisse meiner TabelleView nach Entfernung zu sortieren, die dem Benutzer am nächsten ist. Ich habe meine Entfernung und Funktion getrennt, um die Entfernung zu vergrößern, um meine Datenmanipulation besser in den Griff zu bekommen. Ich denke, es sollte einfach sein, aber ich weiß, dass ich es vermisse.Nach Entfernung sortieren In TableView
Die Abstandsfunktion ist dies:
func calculateDistance(userlat: CLLocationDegrees, userLon:CLLocationDegrees, venueLat:CLLocationDegrees, venueLon:CLLocationDegrees) -> Double {
let userLocation:CLLocation = CLLocation(latitude: userlat, longitude: userLon)
let priceLocation:CLLocation = CLLocation(latitude: venueLat, longitude: venueLon)
//let distance = String(format: "%.0f", userLocation.distance(from: priceLocation)/1000)
return userLocation.distance(from: priceLocation)/1000
}
PopulateData Funktion:
func populateData() {
//Pulls TableData for UITableView
DataService.ds.REF_VENUE.observe(.value, with: { (snapshot) in
self.posts = [] // THIS IS THE NEW LINE
if snapshot.exists(){
if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {
for snap in snapshot {
if let snapValue = snap.value as? [String:AnyObject],
let venueLat = snapValue["LATITUDE"] as? Double,
let venueLong = snapValue["LONGITUDE"] as? Double
{
let distance = self.calculateDistance(userlat: self.userLatt, userLon: self.userLonn, venueLat: venueLat, venueLon: venueLong)
if distance <= 2 {
let key = snap.key
let post = Post(postKey: key, postData: snapValue)
self.posts.append(post)
self.posts.sort(by: (posts, distance)) //Where I'm trying to sort
}
}
}
self.getDataForMapAnnotation()
}
self.tableView.reloadData()
}
})
}
Ich bin nicht sicher, ob ich kann sogar Art eine Reihe von Wörterbüchern, sondern das Endziel haben, ist die tableView zeigt die Orte, die dem Benutzer am nächsten sind. Wenn Sie irgendwelche Vorschläge haben, lassen Sie es mich bitte wissen!
Wo würde dies am besten genutzt werden? Müsste dafür eine neue Funktion erstellen oder wäre dies am besten innerhalb einer der Funktionen, die ich bereits habe, implementiert? –
Wo Sie Ihren aktuellen Sortierversuch wahrscheinlich haben würde funktionieren. Wirklich überall, nachdem Sie das Posts-Array gefüllt haben und bevor Sie 'tableView.Data() 'aufrufen, wäre es ein guter Platz, um es zu setzen. Ich glaube nicht, dass Sie eine separate Funktion erstellen müssen, um das Array zu sortieren. – haarismuneer
Ich glaube nicht, dass ich Abstand als Teil meiner Post-Klassenstruktur habe. In meiner Post-Klasse habe ich nur die MetaData auf den Venues (zB: lat, long, name, etc). Im Moment versuche ich das nochmal zu tun, um sicherzustellen, dass es sortiert werden kann. Jedes Mal, wenn ich es jetzt versuche, sagt es mir, dass Distanz kein Mitglied von Beiträgen ist und ich bin etwas verwirrt, um ehrlich zu sein. –