2017-07-25 104 views
-3

返回它與noob問題。這個類不是關鍵字編碼的密鑰UserEmailAdresLogin

出於某種原因,我得到以下錯誤:

2017年7月25日14:29:00.589401 + 0200 Yiives [1416:534883 ***終止應用程序由於未捕獲的異常 'NSUnknownKeyException',究其原因: '[setValue:forUndefinedKey:]:這個類不是關鍵字UserEmailAdresLogin的密碼值。「

現在我正在通過綠色方式自行查看問題,所以請賜教。

它不會讓我加載登錄視圖。那麼,如何做到這一點:d

我運行下面的代碼:

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

檢查你的故事板和電子郵件插座。你的代碼中沒有任何名爲UserEmailAdresLogin的插座,但顯然你的Storyboard有它。您是否早先創建了名爲UserEmailAdresLogin的出口,然後將其刪除?但忘記從SB刪除? –

+0

查看你的故事板,你必須在故事板中有一個出口鏈接,該故事板已從你的相關代碼中刪除 –

+0

不,不是。這就是我所做的一切。但是我會檢查它 –

回答

1

這個錯誤意味着你有一個鏈接(我想在你的故事板文件)到一個名爲UserEmailAdresLogin變量,但這個變量沒有您的代碼源中存在更長的時間。 要檢查它,右鍵單擊故事板中的控制器,它將顯示鏈接列表,然後通過單擊十字架來刪除。

如果問題不在故事板中,則它是一個變量名中的拼寫錯誤(順便說一下,它應該寫成「Address」)。

相關問題