【发布时间】:2018-02-20 16:31:58
【问题描述】:
我正在使用 QRCode 扫描仪,当扫描仪进行扫描时,它会检查 QRCode 中给出的位置是否靠近我当前的位置。如果是这样,如果没有给出错误消息,您可以继续。到目前为止,一切都很好。但问题是,当我尝试用不同的位置扫描第二个 QRCode 时,它仍然会将我当前的位置与之前扫描的 QRCode 的位置进行比较。 这是我到目前为止所做的:
这是地理编码部分:
CLGeocoder().geocodeAddressString(self.qrbaradresse, completionHandler: { (placemarks, error) -> Void in
if let placemark = placemarks?[0] {
let location = placemark.location
self.distanceCondition(locat: location!)
}
}
然后进入distanceCondition函数:
func distanceCondition (locat: CLLocation){
print(locat, "LOCAT")
self.distancebar = (self.locationManager.location?.distance(from: locat))!
print (distancebar, " entfernung")
let distanceint = Int(distancebar)
if distanceint < 50 {
let alert = UIAlertController(title: "Erfolgreich", message: "Du bist bei \(self.qrbarname)!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Weiter", style: .default, handler:{ (action) in self.performSegue(withIdentifier: "scansegue", sender: self)}))
self.present(alert, animated: true, completion: nil)
}else{
在 func distanceCondition 的第一行中,我总是打印已用于距离检查的位置。它始终是第一个被扫描的代码。变量位置永远不会改变。所以要明确我的观点。我想知道如何删除地标 [0] 并将其替换为新地址。 每次扫描代码时,它都会添加到数组地标中,但我总是检查位置 0 处的数组地标,并且变量位置始终保持不变。但是如何用数组地标位置 0 中的地址替换新扫描的地址?
泰!
【问题讨论】:
-
“我认为...”首先检查您的场所。在您调用 geocodeAddressString 的位置放置一个断点,并检查您是否提供了正确的 QR 码。在 completionHandler 中放置一个断点,然后检查地标中返回的内容。
-
在 func distanceCondition 的第一行中,我总是打印已用于距离检查的位置。它始终是第一个被扫描的代码。变量位置永远不会改变。所以要明确我的观点。我想知道如何删除地标[0] 并将其替换为新地址。
-
您还没有检查您的场所。验证您将正确的地址字符串提供给
geocodeAddressString。当它返回时,验证地标数组中的实际内容。还要检查error参数。如果您输入了正确的地址字符串,那么geocodeAddressString应该会返回正确的地标(假设 Apple 可以解析地址)。