if (LAContext().canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics)) { return true;}
使用Swift2,我将代码更改为:
if #available(iOS 8,*) { if (LAContext().canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics)) { return true; } }
但是我收到以下错误:
Call can throw,but it is not marked with ‘try’ and the error is not handled
我究竟做错了什么?
解决方法 你需要做这样的事情:do { try laContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics) // Call evaluatePolicy here} catch { print("Cannot evaluate policy,error: \(error)")}
返回Bool并且有一个inout NSError的所有方法?因为最后一个参数被自动转换(Swift 2)以抛出错误,所以参数被删除了. Bool也是多余的,因为它等于inout NSError?没有
编辑:要获取有关错误的更多信息,请在catch中使用:
switch LAError(rawValue: error.code)! {case .AuthenticationFailed: breakcase .UserCancel: breakcase .UserFallback: breakcase .SystemCancel: breakcase .PasscodeNotSet: breakcase .touchIDNotEnrolled: breakdefault: break}
(您可以通过CMD点击LAError来查看所有可能的错误
编辑:在XCode 7 beta 5/6中,此方法不再抛出,但将NSErrorPointer作为最后一个参数(因为NSURL的checkResourceIsReachableAndReturnError,因为我不知道的原因).但是,如果您愿意,可以将LAContext扩展为像之前一样制作投掷方法:
extension LAContext { func canEvaluatePolicyThrowing(policy: LAPolicy) throws { var error : NSError? canEvaluatePolicy(policy,error: &error) if let error = error { throw error } }}总结
以上是内存溢出为你收集整理的ios – LAContext可以评估策略和Swift 2全部内容,希望文章能够帮你解决ios – LAContext可以评估策略和Swift 2所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)