首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LAContext canEvaluatePolicy和Swift 2

LAContext canEvaluatePolicy和Swift 2
EN

Stack Overflow用户
提问于 2015-06-29 10:07:41
回答 3查看 5K关注 0票数 4

这是我在Swift中的代码:

代码语言:javascript
复制
if (LAContext().canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics)) {
  return true;
}

使用Swift2,我将代码更改为如下所示:

代码语言:javascript
复制
if #available(iOS 8, *) {
            if (LAContext().canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics)) {
                return true;
            }
        }

但我得到了以下错误:

调用可以抛出,但它没有被标记为“try”,错误也不会被处理。

我做错什么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-29 11:51:53

你需要这样做:

代码语言:javascript
复制
do {
    try laContext.canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics)

    // Call evaluatePolicy here
} catch {
    print("Cannot evaluate policy, error: \(error)")
}

返回Bool并将inout NSError?作为最后一个参数的所有方法都会自动转换(Swift 2)以引发错误,因此参数被移除。而且,Bool是多余的,因为它等于inout NSError?是否为零。

编辑:要获取有关错误的更多信息,请在捕获区中使用以下内容:

代码语言:javascript
复制
switch LAError(rawValue: error.code)! {
case .AuthenticationFailed:
    break
case .UserCancel:
    break
case .UserFallback:
    break
case .SystemCancel:
    break
case .PasscodeNotSet:
    break
case .TouchIDNotEnrolled:
    break
default:
    break
}

(您可以通过点击LAError查看所有可能的错误

编辑:在XCode 7 beta 5/6中,此方法不再抛出,而是以NSErrorPointer作为最后一个参数(由于我不知道的原因,NSURLcheckResourceIsReachableAndReturnError也是如此)。但是,如果您愿意,可以扩展LAContext以创建以前的抛出方法:

代码语言:javascript
复制
extension LAContext {
    func canEvaluatePolicyThrowing(policy: LAPolicy) throws {
        var error : NSError?
        canEvaluatePolicy(policy, error: &error)
        if let error = error { throw error }
    }
}
票数 7
EN

Stack Overflow用户

发布于 2015-08-09 07:21:13

试试下面的代码:

代码语言:javascript
复制
do {

        try touchIDContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics)


    //Comprobar la repuesta de esa autentificacion

    touchIDContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: mensaje, reply: { (success, ErrorType) -> Void in


            if success
            {
               // Autentificacion correcta
                alert.title = "Genial!"
                alert.message = "Te has autentificado correctamente"

                // Mostramos este Alerview

                self.presentViewController(alert, animated: true, completion: nil)

            }

            else
            {
                //AUTENTIFICACION FALLIDA
                //PASAMOS VALORES AL ALERTVIEW
                alert.title = "AUTENTIFICACION FALLIDA!!"

                //OFRECEMOS MAS INFORMACION SOBRE EL FALLO DE AUTENTIFICAICON

                switch ErrorType!.code {

                case LAError.UserCancel.rawValue: alert.message = "Usuario Cancela"
                case LAError.AuthenticationFailed.rawValue: alert.message = "Autentificacion Fallida!"
                case LAError.PasscodeNotSet.rawValue: alert.message = "Password no configurado"
                case LAError.SystemCancel.rawValue: alert.message = "Error de sistema"
                case LAError.UserFallback.rawValue:alert.message = "Usuario selecciona contrasen"
                default:alert.message = "Imposible Autentificarse"

            }

                //Mostramos el AlertView

                self.presentViewController(alert, animated: true, completion: nil)

            }
        }) // cierre del clousure





    } // cierre del do

    catch {

        print("Cannot evaluate policy, error: \(error)")
    } // cierre del catch
票数 0
EN

Stack Overflow用户

发布于 2017-01-13 10:52:27

对于Swift 3,我这样做:

代码语言:javascript
复制
context.evaluatePolicy(policy, localizedReason: ...) { (success: Bool, error: Error?) in
    DispatchQueue.main.async {
        if success {
            ...
        } else if let error = error as? LAError {
            switch error.code {
            case LAError.authenticationFailed:
            ...
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31112899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档