使用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); }
答案 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技巧。