在 Swift(核心位置)中使用数组简化代码

Simplifying code using arrays in Swift (core location)

我正在做一个小项目:如果人在给定坐标附近,它会输出 "Hello"。它正在工作,但我认为如果我继续制作这么多变量,代码太多了。有没有办法组织它或使其更容易添加坐标。我尝试使用数组但无法正常工作。什么可能是最好的解决方案?我对 Swift 语法非常陌生。非常感谢任何帮助。

let addressLocation:CLLocation = CLLocation(latitude: 37.334421, longitude: -122.037987)
let addressLocation2:CLLocation = CLLocation(latitude: 37.334395, longitude: -122.041173)


let meters:CLLocationDistance = location!.distanceFromLocation(addressLocation)
let meters2:CLLocationDistance = location!.distanceFromLocation(addressLocation2)


if (meters <= 50.00000000 || meters2 <= 50.0000000){
    print("Hello")
}else{
    print("No")
}

这就是您使用数组保存位置的方式。

var location = CLLocation(latitude: 37.334421, longitude: -122.037987)
var locations:[CLLocation] = [CLLocation(latitude: 37.334421, longitude: -122.037987),
                              CLLocation(latitude: 37.334395, longitude: -122.041173)]
var distances = locations.map{location.distanceFromLocation([=10=])}
let maxDistance = 50.0
if (distances.contains{[=10=] < maxDistance}) {
    print("Hello")
} else {
    print("No")
}

如果需要,您可以使用 locations.filter({ location!.distanceFromLocation([=11=]) < maxDistance }) 获取所有附近位置的数组,但是,为了您的目的,这是我能想到的最简单的方法:

var locations = [CLLocation(latitude: 37.334421, longitude: -122.037987),
                 CLLocation(latitude: 37.334395, longitude: -122.041173)]
let maxDistance = 50.0

if locations.contains({ location!.distanceFromLocation([=10=]) < maxDistance }) {
    print("Hello")
} else {
    print("No close locations")
}

这就是您实现接收给定位置、地址列表并执行检查的函数的方式。

func check(location:CLLocation?, addresses:[CLLocation]) {
    guard let location = location else { return }
    if (addresses.contains { [=10=].distanceFromLocation(location) < 50 }) {
        print("Hello")
    } else {
        print("No")
    }
}