CLLocationManager kCLErrorDomain代码?

时间:2013-11-23 16:43:05

标签: ios cllocationmanager ibeacon

使用iBeacon和CoreLocation我收到以下错误:

错误Domain = kCLErrorDomain Code = 16“无法完成操作。(kCLErrorDomain错误16。)

除非我错过了,否则Apple似乎没有明确提及每个错误代码的含义。

任何人都可以解释此错误代码吗?

错误来自:

- (void)locationManager:(CLLocationManager *)manager rangingBeaconsDidFailForRegion:    (CLBeaconRegion *)region withError:(NSError *)error{
NSLog(@"%@", error);
}

- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error{
NSLog(@"%@", error); }

3 个答案:

答案 0 :(得分:11)

查看CLError的文档。值16为kCLErrorRangingUnavailable

文档说:

  

禁用范围。如果设备处于飞行模式或禁用蓝牙或位置服务,则可能会发生这种情况。

答案 1 :(得分:1)

此外,请确保已启用后台应用刷新。出于某种原因,我的iPhone 5s在iOS 7.1.1上,即使我的应用程序位于前台,当禁用后台应用程序刷新时,信标也不会有范围。启用App Refresh会使信标再次出现在范围内。

答案 2 :(得分:1)

您可以使用CLError枚举和返回给您的位置管理器的错误,以特定和明确的方式处理位置错误。

看起来像这样:

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
  if let locationError = CLError(rawValue: error.code) {
    switch locationError {
    case .Denied:
      println("Location permissions denied")
    default:
      println("Unhandled error with location: \(error)")
    }
  }
}

感谢@rmaddy提供的CLError技巧。