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