我在Swift中编码,我想在我的应用中使用用户的位置。我已将NSLocationWhenInUseUsageDescription
和NSLocationAlwaysUsageDescription
添加到Info.plist
并已正确配置它们。我还添加了CoreLocation.framework并将其导入ViewController。我也在我的班级定义中使用CLLocationManagerDelegate
。我已经实现了方法didChangeAuthorizationStatus
,这在用户选择允许将其位置提供给应用程序时起作用。当发生这种情况时,我已将文本打印到控制台。但是,当我在打印到控制台后立即从此方法调用方法didUpdateLocations
时,该方法不会运行,并且没有任何新内容打印到控制台。我确保在didUpdateLocations
方法中包含一个打印命令,以确保这一点。这是其中一种方法的代码:
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
print("permission granted")
locationManager.startUpdatingLocation()
} else {
print(status)
}
}
正如您所看到的,在方法中,locationManager.startUpdatingLocation()
被调用,它应该开始这样做。以下是此方法的代码:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print(locations)
}
但是,当我在我的应用程序中按下Allow时,除了“允许的权限”之外,它不会向控制台打印任何内容,这是在第一种方法中调用的。我该如何解决?非常感谢任何帮助!
编辑:
嗯,实际上我只是通过模拟模拟器手机中的移动来解决问题。你只需要点击Debug,将鼠标悬停在Location上,然后选择一种移动形式!