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如何按距离对表格视图进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何按字母顺序对表格视图单元格进行排序

在 Swift 中按计算的距离对数组进行排序

我正在尝试按位置对用户的帖子进行排序并使用 PFGeopoint 和 Swift 显示距离

Swift UITableView(无部分)过滤到带有部分的表格视图

如何按日期对我的表格视图中的数组进行排序

如何按保存顺序对表格视图中的数据进行排序?