我一直在尝试使它工作一段时间,而我来这里询问-如何在Swift中使用CLLocationManagerDelegate方法?我把它放在班上的第一位:
var locationManager = CLLocationManager()
我在我的viewDidLoad方法中添加了以下内容:
viewDidLoad
locationManager.delegate = self locationManager.distanceFilter = kCLDistanceFilterNone locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.startUpdatingLocation()
而且我尝试使用这些委托方法无济于事:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: AnyObject[]!) { locationReceived = true } func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) { locationReceived = false }
我也尝试过在函数前面使用@optional,但是Xcode会引发编译器错误。有任何想法吗?
如果尚未添加,则需要将NSLocationAlwaysUsageDescription或NSLocationWhenInUseUsageDescription键添加到您的plist中,因为它们现在是必需的,
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
iOS8 +要求将这两个字符串之一设置为使用位置。您使用哪一种取决于您打算如何询问位置。
使用NSLocationAlwaysUsageDescription对于要使用的设备的位置,即使应用没有打开并正在使用的应用程序。
使用NSLocationWhenInUseUsageDescription对于要使用的设备的位置,只有当应用程序是开放的,在使用中的应用程序。
注意: 添加字符串时,在构建和运行之前,请先从设备上删除该应用,然后进行全新安装。看来,如果该应用在升级到iOS8之前被授权使用位置,它不会再次征求您的许可,也不会看到您设置了这些字符串。进行删除和全新安装即可解决此问题。
设置两个字符串中的任何一个都会提示安装/首次使用时出现以下弹出窗口:“即使不使用该应用程序,也允许“ ThisApp”访问您的位置”
这里有一个 截图 中的 的plist 文件。