CLLocationManager kCLErrorDomain代码?

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

错误域= kCLErrorDomain代码= 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); } 

看看CLError的文档。 值16是kCLErrorRangingUnavailable

文档说:

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

此外,请确保您已启用后台应用程序刷新。 出于某种原因,在iOS 7.1.1上使用我的iPhone 5s时,即使我的应用程序处于前台,禁用“后台应用程序刷新”时信标也不会有效。 打开应用程序刷新导致信标再次范围。

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

它看起来像这样:

 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提示。