座標が現在の位置から離れすぎている状態から、古い座標をすべてアレイから削除しようとしています。しかし、repeatステートメントは繰り返し実行されず、すべての座標が削除されます。私は私のrepeat文で立ち往生しています、そしてそれ以上の要素がないまでdistArray
内のすべての要素が削除されるのでリピートステートメントで固まってしまう
var locationArray = [Double]()
var distArray = [CLLocationDistance]()
let maxDis: CLLocationDistance = CLLocationDistance(exactly: 2000)!
let LAT = Double(location.coordinate.latitude)
let LONG = Double(location.coordinate.longitude)
repeat{
locationArray.insert(contentsOf: [LAT, LONG], at: 0)
} while locationArray.count <= 4
let oldCo = CLLocation(latitude: LAT, longitude: LONG)
let newlat = locationArray[2]
let newlong = locationArray[3]
let newCo = CLLocation(latitude: newlat, longitude: newlong)
let dist = newCo.distance(from: oldCo)
distArray.append(dist)
let distArraySum = (distArray.reduce(0) { $0 + $1 })
print(distArraySum)
repeat{
if distArraySum >= maxDis {
locationArray.remove(at: locationArray.count-2)
locationArray.remove(at: locationArray.count-1)
distArray.remove(at: 0)
print("deleted Coordinates")
}
} while distArraySum >= maxDis
アプリが終了します。だから、それが再び繰り返され、空の配列から要素を削除しようとすると、致命的なエラーが発生します。
インデントは非常に創造的です。 – Alexander