-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)
}
}
檢查你的故事板和電子郵件插座。你的代碼中沒有任何名爲UserEmailAdresLogin的插座,但顯然你的Storyboard有它。您是否早先創建了名爲UserEmailAdresLogin的出口,然後將其刪除?但忘記從SB刪除? –
查看你的故事板,你必須在故事板中有一個出口鏈接,該故事板已從你的相關代碼中刪除 –
不,不是。這就是我所做的一切。但是我會檢查它 –