2017-03-03 5 views
8

मैं अपने आईओएस ऐप में स्थानीय प्रमाणीकरण सुरक्षा को कार्यान्वित करना चाहता हूं लेकिन मैं त्रुटि प्राप्त कर रहा हूं और यह समझने में सक्षम नहीं हूं कि मुझे यह क्यों मिल रहा है।आईओएस में टचआईडी का उपयोग कैसे करें 10

मैं आईफोन 5 एस का उपयोग कर रहा हूं। क्या यह मायने रखता है?

कोड:

import UIKit 
import LocalAuthentication 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func action(_ sender: Any) { 
     authenticateUser() 
    } 

    func authenticateUser() { 
     let authContext : LAContext = LAContext() 
     var error: NSError? 

     if authContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error){ 
      authContext.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Biometric Check for application", reply: {(successful: Bool, error: NSError?) -> Void in 
       if successful{ 
        print("TouchID Yes") 
       } 
       else{ 
        print("TouchID No") 
       } 
       } as! (Bool, Error?) -> Void) 
     } 
     else{ 
      authContext.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: "Enter your Passcode", reply: { 
       (successful: Bool, error: NSError?) in 
       if successful{ 
        print("PassCode Yes") 
       } 
       else{ 
        print("PassCode No") 
       } 
       } as! (Bool, Error?) -> Void) 
     } 
    } 
} 

त्रुटि:

enter image description here

अग्रिम धन्यवाद।

उत्तर

5

typecasting के बिना इस कोड को काम करना चाहिए

func authenticateUser() { 
    let authContext : LAContext = LAContext() 
    var error: NSError? 

    if authContext.canEvaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, error: &error){ 
     authContext.evaluatePolicy(LAPolicy.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Biometric Check for application", reply: {successful, error -> Void in 
      if successful{ 
       print("TouchID Yes") 
      } 
      else{ 
       print("TouchID No") 
      } 
     } 
     ) 
    } 
    else{ 
     authContext.evaluatePolicy(LAPolicy.deviceOwnerAuthentication, localizedReason: "Enter your Passcode", reply: { 
      successful,error in 
      if successful{ 
       print("PassCode Yes") 
      } 
      else{ 
       print("PassCode No") 
      } 
     } 
     ) 
    } 
} 
+0

कृपया बताएं कि इससे समस्या हल हो: क्योंकि आप एक बंद कास्ट नहीं टाइप कर सकते हैं यह है, क्योंकि ऐसा करना व्यर्थ है। –

+0

यह त्रुटि के लिए एनएसईआरआरआर का कास्टिंग नहीं है, क्योंकि यह वह नहीं है जो आप कलाकारों के साथ कर रहे हैं। एक बंद एक प्रकार है और एक असंबंधित प्रकार के लिए एक बल डाउनकास्ट हमेशा असफल हो जाएगा। '12 के रूप में! स्ट्रिंग 'एक अपवाद फेंक देगा। इसी तरह जब आप डाउनकास्ट को मजबूर करते हैं '((बूल, एनएसईआरआरआर?) -> शून्य)' असंबंधित प्रकार '((बूल, त्रुटि?) -> शून्य)' आपको अपवाद मिलता है। सिर्फ इसलिए कि एनएसईआरआरआर और त्रुटि संबंधित हैं, संबंधित विभिन्न हस्ताक्षरों के साथ बंद नहीं करती हैं। – Paulw11

संबंधित मुद्दे