2017-07-25 3 views
-3

Zurück wieder mit einer noob Frage.Diese Klasse ist nicht Schlüssel-Code-kompatibel für den Schlüssel UserEmailAdresLogin

Aus irgendeinem Grund habe ich die folgende Fehlermeldung erhalten:

2017.07.25 14: 29: 00.589401 + 0200 Yiives [1416: 534.883] *** Beenden app aufgrund nicht abgefangene Ausnahme 'NSUnknownKeyException', Grund: '[setValue: forUndefinedKey:]: Diese Klasse ist für den Schlüssel UserEmailAdresLogin nicht mit Schlüsselwerten codiert.'

Jetzt bin ich Weg zu grün, um das Problem auf eigene Faust zu sehen, also bitte erleuchte mich.

Es lässt mich nicht laden die Login-Ansicht. Also, wie kann ich machen es möglich: D

ich den folgenden Code:

import UIKit 

class LoginViewController: UIViewController { 

    @IBOutlet weak var BackgroundButton: UIButton! 

    @IBOutlet weak var UserEmailAdresInput: UITextField! 

    @IBOutlet weak var UserPasswordInput: UITextField! 

    @IBOutlet weak var UserLogin: UIButton! 

    @IBOutlet weak var UserForgotPassword: UIButton! 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

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

    @IBAction func CloseLogin(_ sender: Any) { 

     dismiss(animated: true, completion: nil) 
    } 

    @IBAction func Login(_ sender: Any) { 

     let UserEmail = UserEmailAdresInput.text 
     let UserPassword = UserPasswordInput.text 

     let UserEmailStored = UserDefaults.standard.string(forKey: "UserEmail"); 

     let UserPasswordStored = UserDefaults.standard.string(forKey: "UserPassword"); 

     if(UserEmailStored == UserEmail){ 
      if(UserPasswordStored == UserPassword){ 

       //Login is succesfull 

       UserDefaults.standard.set(true, forKey: "UserLoggedIn") 
       UserDefaults.standard.synchronize(); 

      } 


     } 
    } 

} 


If you need the source where the data is bein inserted: 

import UIKit 

class EntryViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var UserEmailAdresInput: UITextField! 

    @IBOutlet weak var UserPasswordInput: UITextField! 

    @IBOutlet weak var UserPasswordInputRepeated: UITextField! 

    @IBOutlet weak var UserSignUp: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.UserEmailAdresInput.delegate = self 
     self.UserPasswordInput.delegate = self 
     self.UserPasswordInputRepeated.delegate = self 


    } 

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

    //Hide Keyboard upon Touch 

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){ 
     self.view.endEditing(true) 
    } 

    //Hide Keyboard upon Return Key 
    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     if textField == UserEmailAdresInput{ 
      UserEmailAdresInput.resignFirstResponder() 
     } else if textField == UserPasswordInput{ 
      UserPasswordInput.resignFirstResponder() 
     } else { 
      UserPasswordInputRepeated.resignFirstResponder() 
     } 
     return true 
    } 

    @IBAction func SignUp(_ sender: Any) { 

     let UserEmail = UserEmailAdresInput.text; 
     let UserPassword = UserPasswordInput.text; 
     let UserPasswordRepeated = UserPasswordInputRepeated.text; 



     //Check if fields are filled in correctly 

     if(UserEmail?.isEmpty == true || UserPassword?.isEmpty == true || UserPasswordRepeated?.isEmpty == true){ 

      displayAlertMessage(userMessage: "Alle velden moeten ingevuld worden"); 
      return; 
     } 

     if UserEmail?.range(of: "@") == nil{ 
      displayAlertMessage(userMessage: "Vul een legitiem emailadres in"); 
      return; 
     } 

     if (UserPassword?.characters.count)! < 5{ 
      displayAlertMessage(userMessage: "Wachtwoord moet langer zijn dan 5 karakters"); 
     } 

     if(UserPassword != UserPasswordRepeated){ 

      displayAlertMessage(userMessage: "Wachtwoorden zijn niet gelijk"); 
      return; 
     } 

     //Store Data 
     UserDefaults.standard.set(UserEmail, forKey: "UserEmail"); 
     UserDefaults.standard.set(UserPassword, forKey: "UserPassword"); 
     UserDefaults.standard.synchronize(); 

     //SignUp Succesfull 
     var Alert = UIAlertController(title:"Succesvol aangemeld!", message: "Ga naar je email inbox om je aanmelding te voltooien", preferredStyle: UIAlertControllerStyle.alert); 

     let OkAction = UIAlertAction(title:"Ok", style: UIAlertActionStyle.default, handler: nil); 

     Alert.addAction(OkAction); 
     self.present(Alert, animated: true, completion: nil) 


    } 

    func displayAlertMessage(userMessage:String){ 

     var Alert = UIAlertController(title:"Melding", message: userMessage, preferredStyle: UIAlertControllerStyle.alert); 

     let OkAction = UIAlertAction(title:"Ok", style: UIAlertActionStyle.default, handler: nil); 

     Alert.addAction(OkAction); 

     self.present(Alert, animated: true, completion: nil) 

    } 

} 
+3

Überprüfen Sie Ihr Storyboard und Ihre E-Mail-Adresse. Du hast keine Filiale namens UserEmailAdresLogin in deinem Code, aber offensichtlich hat dein Storyboard sie. Haben Sie zuvor eine Filiale mit dem Namen UserEmailAdresLogin erstellt und diese dann gelöscht? aber vergessen zu löschen von SB? –

+0

Überprüfen Sie Ihr Storyboard Sie müssen über eine Verknüpfung in Ihrem Storyboard verfügen, die aus Ihrem zugehörigen Code entfernt wurde –

+0

Nein, nicht wirklich. Das war alles was ich getan habe. Aber ich werde es überprüfen –

Antwort

1

Dieser Fehler bedeutet, dass Sie einen Link (ich glaube, in der Storyboard-Datei) auf eine Variable mit dem Namen UserEmailAdresLogin aber diese Variable nicht ist länger in Ihrer Codequelle vorhanden. Um es zu überprüfen, klicken Sie mit der rechten Maustaste auf Ihren Controller in Ihrem Storyboard, es wird die Liste der Links angezeigt, und löschen Sie einfach, indem Sie auf das Kreuz klicken.

Wenn das Problem nicht in einem Storyboard ist, ist es ein Tippfehler in einem Variablennamen (übrigens sollte es geschrieben werden: "Adresse").

Verwandte Themen