2016-09-28 4 views
0

私はステップ4スウィフト3にcanEvaluatePolicy機能の「スイッチ(エラー!.CODE)」スウィフト3(Xcodeの8)には存在しません

if context.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error:nil) { 

    // 2. 
    context.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, 
    localizedReason: "Logging in with Touch ID", 
    reply: { (success : Bool, error : NSError?) -> Void in 

     // 3. 
     dispatch_async(dispatch_get_main_queue(), { 
     if success { 
      self.performSegueWithIdentifier("dismissLogin", sender: self) 
     } 

     if error != nil { 

      var message : NSString 
      var showAlert : Bool 

      // 4. 
      switch(error!.code) { 

コードの下に変換してるのXcodeでもう動作しません。 8、Swift 3.以下のケースはできませんでした。

switch(error!.code) { 
      case LAError.AuthenticationFailed.rawValue: 
      message = "There was a problem verifying your identity." 
      showAlert = true 
      break; 

現在、私はまだ解決策が見つかっていないようです。どんな提案も、私に教えてください。

ありがとうございます!

+0

ませソリューションはまだ? '[SWのための最初のヒットift3] error code'はhttp://stackoverflow.com/questions/38711269/accessing-code-in-swift-3-errorです。 –

答えて

9

最初にevaluatePolicyメソッドの返信クローズを変更し、Swift 3ではErrorではなくNSErrorです。

reply: { (success : Bool, error : Error?) -> Void in 

次に、このような識別子でperformSegueを変更します。スウィフト3では

performSegue(withIdentifier: "dismissLogin", sender: self) 

あなたはNSErrorErrorオブジェクトを変換またはErrorインスタンスの代わりcode_codeを使用する必要があります。

switch((error! as NSError).code) 

OR

switch(error!._code) 

また、あなたは、このような構文を派遣変更する必要があります。 ? - エラー): "タッチIDでログイン"、 返信::{(成功:ブール値、エラー

Dispatch.async.main { 
    //write code 
} 
+0

最初のオプションは、魅力を働いています。あなたは最高です。どうもありがとう! –

+0

ようこそ相手: –

+1

また、 'if error!= nil'ではなく' if let error = error'を使用して、エラーオブジェクトの展開を強制しないでください。 – bsarr007

2

これは実際には非常に簡単

context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometricsは、 localizedReasonを得ました>ボイド

// 3. 
    DispatchQueue.main.async { 
    if success { 
     self.performSegueWithIdentifier("dismissLogin", sender: self) 
    } 

    if let error = error { 

     var message : NSString 
     var showAlert : Bool 

     // 4. 
     switch error { 
      case LAError.userCancel: 
       //do stuff 

にこれは、メモリから、ほとんどありませんが、私はそれが正しいことだと思います。

関連する問題