Swift 4更新: 错误现在传递给回调
error: Error,可以将其转换为
CLError:
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { if let clErr = error as? CLError { switch clErr { case CLError.locationUnknown: print("location unknown") case CLError.denied: print("denied") default: print("other Core Location error") } } else { print("other error:", error.localizedDescription) }}
较旧的答案: 核心位置错误代码定义为
enum CLError : Int { case LocationUnknown // location is currently unknown, but CL will keep trying case Denied // Access to location or ranging has been denied by the user // ...}
err.pre,
toRaw()可以使用:
if err.pre == CLError.LocationUnknown.toRaw() { ...
或者,您可以
CLError根据错误代码创建一个,然后检查是否有可能的值:
if let clErr = CLError.fromRaw(err.pre) { switch clErr { case .LocationUnknown: println("location unknown") case .Denied: println("denied") default: println("unknown Core Location error") }} else { println("other error")}
更新: 在Xpre 6.1 beta
2中,
fromRaw()和
toRaw()方法分别被
init?(rawValue:)初始化器和
rawValue属性代替:
if err.pre == CLError.LocationUnknown.rawValue { ... }if let clErr = CLError(rawValue: pre) { ... }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)