在 Swift 中使用 UISwitch 保存用户名和密码

Saving username and password using UISwitch in Swift

我搜索了很多线程,这是我最后的选择,因为我看到这个问题以不同的方式提出,但不完全是 swift 和用户名和密码保存。我希望我的 UISwitch 在打开时保存我的用户名和密码信息。我整天都在尝试让这个 UISwitch 使用 NSUserDefaults 保存我的用户名和密码。请帮助我,我已经迫不及待地尝试了,我几乎搜索了每个论坛来找到答案,但没有多少人向您展示如何实施它。下面是我的代码。我知道它很暗淡,因为我是初学者,但是我 "Login Button" 保存了我的用户名和密码,但我不知道如何让它只在我单击 UISwitch 时保存该信息以及如何保存它在 "view did load method"。我在这里先向您的帮助表示感谢!!我不知道要将什么代码包含到我的 UISwitch 方法中。 这是我的登录按钮的第一部分,然后是我的视图加载方法。我没有 UISwitchMethod

的任何代码
 override func viewDidLoad() {
super.viewDidLoad()

//Save username and password info if Save UISwitch is selected

  switchState.on = NSUserDefaults.standardUserDefaults().boolForKey("switchState")
NSUserDefaults.standardUserDefaults().boolForKey("keepUsername")
NSUserDefaults.standardUserDefaults().boolForKey("keepPassword")

}

@IBAction func LoginButton(sender: AnyObject) {

var username = self.usernameTextField.text
var password = self.passwordTextField.text
var user = PFUser.currentUser()


NSUserDefaults.standardUserDefaults().setObject(username, forKey: "keepUsername")
NSUserDefaults.standardUserDefaults().setObject(password, forKey: "keepPassword")

if count(username) < 4 || count(password) < 5 {

  var alert: UIAlertView = UIAlertView(title: "Sorry!", message: "Username Must be greater than 4 characters and the password greater that 5 characters", delegate: self, cancelButtonTitle: "Ok")

  alert.show()    
}else { 
  self.actInd.startAnimating()
  PFUser.logInWithUsernameInBackground(username, password: password, block: { (user, NSError) -> Void in

    self.actInd.stopAnimating()

    if ((user) != nil) {

      println("Success \(user) logged in")

    self.performSegueWithIdentifier("toHomeFromLogin", sender: self)

    }else {
       var alert: UIAlertView = UIAlertView(title: "error", message: "Please Sign up :)", delegate: self, cancelButtonTitle: "Ok")
      alert.show()
    }


 @IBAction func switchStateChanged(sender: UISwitch) {


NSUserDefaults.standardUserDefaults().setBool(switchState.on, forKey: "switchState")

  }

我会添加一些我会做的注释和编辑,希望它能对你有所帮助:

   var switchState = Bool()
   var userName = String()
   var password = String()

   override func viewDidLoad() {
    super.viewDidLoad()

//Load all values

    switchState = NSUserDefaults.standardUserDefaults().boolForKey("switchState")
    userName = NSUserDefaults.standardUserDefaults().stringForKey("keepUsername")
    password = NSUserDefaults.standardUserDefaults().stringForKey("keepPassword")
    //Display values somewhere
}

@IBAction func LoginButton(sender: AnyObject) {

    var enteredUser = self.usernameTextField.text
    var enteredPassword = self.passwordTextField.text
    var user = PFUser.currentUser()
    NSUserDefaults.standardUserDefaults().setObject(enteredUser, forKey: "keepUsername")
    NSUserDefaults.standardUserDefaults().setObject(enteredPassword, forKey: "keepPassword")
    NSUserDefaults.standardUserDefaults().synchronize()
    if count(username) < 4 || count(password) < 5 {
        var alert: UIAlertView = UIAlertView(title: "Sorry!", message: "Username Must be greater than 4 characters and the password greater that 5 characters", delegate: self, cancelButtonTitle: "Ok")   
        alert.show()    
    }else { 
       self.actInd.startAnimating()
       PFUser.logInWithUsernameInBackground(username, password: password, block: { (user, NSError) -> Void in 
       self.actInd.stopAnimating(   
        if ((user) != nil) {
             println("Success \(user) logged in")
             self.performSegueWithIdentifier("toHomeFromLogin", sender: self)
         }else {
             var alert: UIAlertView = UIAlertView(title: "error", message: "Please Sign up :)", delegate: self, cancelButtonTitle: "Ok")
         alert.show()
    }
 @IBAction func switchStateChanged(sender: UISwitch) {
    //var readValueFromSwitch = something bolean
    //NSUserDefaults.standardUserDefaults().setBool(readValueFromSwitch, forKey: "switchState")
    //NSUserDefaults.standardUserDefaults().synchronize() 
  }

我把漏洞页面发给你,这样你就可以了解,还有一种方法可以发送注册页面的警报消息,查看//存储数据

导入 UIKit

class RegisterPageViewController: UIViewController {

@IBOutlet weak var userEmailTextField: UITextField!
@IBOutlet weak var userPasswordTextField: UITextField!
@IBOutlet weak var repeatPasswordTextField: UITextField!

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 registerButtonTapped(sender: AnyObject) {

    let userEmail = userEmailTextField.text;
    let userPassword = userPasswordTextField.text;
    let userRepeatPassword = repeatPasswordTextField.text;

    // Check for empty fields
    if (userEmail.isEmpty || userPassword.isEmpty || userRepeatPassword.isEmpty)
    {

        // Display alert message

        displayMyAlertMessage("All fields are required");

        return;

    }
    // Check if passwords match
    if(userPassword != userRepeatPassword)
    {
      //Display an alert message
        displayMyAlertMessage("Passwords do not match");

        return;
    }

    // Store data
    NSUserDefaults.standardUserDefaults().setObject(userEmail, forKey: "userEmail");
    NSUserDefaults.standardUserDefaults().setObject(userPassword, forKey: "userPassword");
    NSUserDefaults.standardUserDefaults().synchronize();


    // Display alert message with confirmation.
    var myAlert = UIAlertController(title: "Alert", message: "Registration successful, Thank you!", preferredStyle: UIAlertControllerStyle.Alert);

    let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default){action in
        self.dismissViewControllerAnimated(true, completion: nil);
    }

    myAlert.addAction(okAction);
    self.presentViewController(myAlert, animated:true, completion:nil);

}

func displayMyAlertMessage(userMessage:String)
{

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

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

    myAlert.addAction(okAction);

    self.presentViewController(myAlert , animated: true, completion: nil)

}

}