在Swift中实现CLLocationManagerDelegate方法

发布于 2021-01-31 23:46:11

我一直在尝试使它工作一段时间,而我来这里询问-如何在Swift中使用CLLocationManagerDelegate方法?我把它放在班上的第一位:

var locationManager = CLLocationManager()

我在我的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会引发编译器错误。有任何想法吗?

关注者
0
被浏览
72
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    如果尚未添加,则需要将NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription键添加到您的plist中,因为它们现在是必需的,


    iOS8 +要求将这两个字符串之一设置为使用位置。您使用哪一种取决于您打算如何询问位置。

    • 使用NSLocationAlwaysUsageDescription对于要使用的设备的位置,即使应用没有打开并正在使用的应用程序。

    • 使用NSLocationWhenInUseUsageDescription对于要使用的设备的位置,只有当应用程序是开放的,在使用中的应用程序。

    注意:
    添加字符串时,在构建和运行之前,请先从设备上删除该应用,然后进行全新安装。看来,如果该应用在升级到iOS8之前被授权使用位置,它不会再次征求您的许可,也不会看到您设置了这些字符串。进行删除和全新安装即可解决此问题。

    设置两个字符串中的任何一个都会提示安装/首次使用时出现以下弹出窗口:“即使不使用该应用程序,也允许“ ThisApp”访问您的位置”

    这里有一个 截图 中的 的plist 文件。

    在此处输入图片说明



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看