Swift如何按距离对表格视图进行排序
Posted
技术标签:
【中文标题】Swift如何按距离对表格视图进行排序【英文标题】:Swift how to sort tableview by distance 【发布时间】:2014-10-20 17:25:36 【问题描述】:您好,我正在寻找一种优雅的方式来在 Swift 和 cocoa 中按距离对对象数组进行排序。
我有一个 Web 服务,它以 JSON 格式返回位置列表(纬度/经度),我想根据用户当前位置的距离对其进行排序。
任何建议将不胜感激。
编辑:澄清一下,我想知道如何以及在何处对 TableViewController 中的数组进行排序,因为在调用 LocationManager 的 didUpdateLocations 后用户的当前位置将可用。不过可能是一个新手问题。
【问题讨论】:
这不是一个几何问题,而不是一个编程问题吗? 【参考方案1】: var yourarray : [location] = []
yourarray.sort( $0.distance > $1.distance )
【讨论】:
更现实地说,你可能会有一个函数distance(point1, point2) -> CLLocationDistance
,你的闭包看起来像 distance(currentCoordinate, $0.coordinate) > distance(currentCoordinate, $1.coordinate)
您有在 TableViewController 中执行此操作的项目吗?我正在学习 swift 和 cocoa,当我将当前位置传递给 viewDidLoad 中的函数时,该位置尚未分配。
此链接将帮助您获取位置github.com/rshankras/WhemAmI此链接将帮助您快速学习uitableview。 makeapppie.com/2014/07/12/…【参考方案2】:
要使用位置对象,您必须将 CoreLocation 框架包含到您的项目中。
然后,计算距离:
import CoreLocation
func someFunc()
let location1 = CLLocation(latitude: ..., longitude: ...)
let location2 = CLLocation(latitude: ..., longitude: ...)
let distance = location2.distanceFromLocation(location1)
// do something with the distance
这就是基础。希望你能明白。
【讨论】:
谢谢,我得到了这部分,问题是我如何以及在哪里可以在 TableViewController 中对这个数组进行排序,因为用户的当前位置只有在调用 LocationManager 的 didUpdateLocations 时才可用。我知道这可能是一个新手问题以上是关于Swift如何按距离对表格视图进行排序的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试按位置对用户的帖子进行排序并使用 PFGeopoint 和 Swift 显示距离