CLLocationManager - kCLErrorDomain

时间:2015-05-29 10:31:39

标签: ios swift cllocationmanager

我有一个CLLocation经理。它工作正常。

locManager = CLLocationManager()
locManager.delegate = self
locManager.desiredAccuracy = kCLLocationAccuracyBest
locManager.requestWhenInUseAuthorization()
locManager.startUpdatingLocation()

当然,我有委托方法:

func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
        println("didfail")
        println(error)
    }

func locationManager(manager:CLLocationManager, didUpdateLocations locations:[AnyObject]) {
        println("location manager called..")
        let locationLast = locations.last as! CLLocation

        latitude = locationLast.coordinate.latitude.description
        longitude = locationLast.coordinate.longitude.description

        locManager.stopUpdatingLocation()

       //....
    }

它没有任何问题!但是,当我在这里时47.5775679 19.0488392(或者在这一点的1-2km半径范围内)它会抛出这个错误:

  

错误域= kCLErrorDomain代码= 0“操作不能   完成。 (kCLErrorDomain错误0。)“

我也尝试过模拟器和真实设备。当我尝试时,我在真实设备上有互联网连接。有黑洞吗? :)或者我不知道。

有人可以告诉我这个现象的原因吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您的设备无法从实际的GPS系统,wifi或互联网中找到您的位置,就会发生这种情况。我的观察是,当设备(我的情况下是iPhone 4)在一个封闭的房间并使用笔记本电脑的热点与Wifi连接时,大部分时间我都会收到同样的错误。

可能的解决方案 -

  1. 如果出现此错误,请尝试调用locManager.stopUpdatingLocation()并再次调用locManager.startUpdatingLocation()。

  2. 检查您的设备是否使用有效的WIFI或3G / 2G互联网连接

  3. 转到设置并重置您的位置服务

  4. 重置您的网络设置

  5. 希望这会对你有所帮助。

答案 1 :(得分:0)

这是一个古老的问题/答案,但它没有考虑模拟器的用例。也就是说,请确保您 没有 调试>位置>没有选择如此:

enter image description here

请务必选择像库比蒂诺的Apple总部这样的有效位置:

enter image description here