ios – LAContext可以评估策略和Swift 2

ios – LAContext可以评估策略和Swift 2,第1张

概述这是我在 Swift中的代码: if (LAContext().canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics)) { return true;} 使用Swift2,我将代码更改为: if #available(iOS 8, *) { if (LAContext().canEvalu 这是我在 Swift中的代码:

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1058614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存