如何解决如何根据Swift中当前用户的距离对本地数据数组进行排序
class Clinic {
var name: String
var lat: Double
var long: Double
init(name: String,lat: String,long: String) {
self.name = name
self.lat = lat
self.long = long
}
static func fetchClinic() -> [Clinic] {
var clinicBizs = [Clinic]()
let clinic1 = Clinic(name: "ABC",lat: 12.000,long: 22.000)
let clinic2 = Clinic(name: "XYZ",lat: 11.000,long: 25.000)
let clinic3 = Clinic(name: "ZZZ",lat: 10.000,long: 26.000)
clinicBizs.append(clinic1)
clinicBizs.append(clinic2)
clinicBizs.append(clinic3)
}
}
在我的 VC 中,我有:
var currentLocation: CLLocationCoordinate2D!
func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) {
let location = locations[locations.count - 1]
if location.horizontalAccuracy > 0 {
locationManager.stopUpdatingLocation()
}
self.currentLocation = CLLocationCoordinate2D(latitude: location.coordinate.latitude,longitude: location.coordinate.longitude) //Print shows current loc
}
如何根据与当前用户的距离对诊所进行排序?
我试过了,但没有用:
//$0.locations <-I tried to give CLLocation to the model instead of lat and long
//Error: Type of expression is ambiguous without more context
let loc = self.clinics.sorted (by: { $0.locations(from: self. currentLocation!) < $1.locations(from: self. currentLocation!)} )
解决方法
你需要换班诊所
class Clinic {
var name: String
var location: CLLocation
init(name: String,lat: Double,long: Double) {
self.name = name
self.location = CLLocation(latitude: lat,longitude: long)
}
static func fetchClinic() -> [Clinic] {
var clinicBizs = [Clinic]()
let clinic1 = Clinic(name: "ABC",lat: 12.000,long: 22.000)
let clinic2 = Clinic(name: "XYZ",lat: 11.000,long: 25.000)
let clinic3 = Clinic(name: "ZZZ",lat: 10.000,long: 26.000)
clinicBizs.append(clinic1)
clinicBizs.append(clinic3)
clinicBizs.append(clinic2)
return clinicBizs
}
}
排序
let current = CLLocation(latitude: currentLocation.latitude,longitude: currentLocation.longitude)
let loc = self.clinics.sorted (by: { $0.location.distance(from: current) < $1.location.distance(from: current) })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。