【问题标题】:Saving username and password using UISwitch in Swift在 Swift 中使用 UISwitch 保存用户名和密码
【发布时间】:2015-05-25 03:12:15
【问题描述】:

我搜索了很多线程,这是我最后的手段,因为我看到这个问题以不同的方式提出,但不完全是为了快速以及用户名和密码保存。我希望我的 UISwitch 在打开时保存我的用户名和密码信息。我整天都在尝试让这个 UISwitch 使用 NSUserDefaults 保存我的用户名和密码。请帮助我,我正在尝试它,我已经搜索了几乎每个论坛以找到答案,但没有多少人向您展示如何实现它。下面是我的代码。我知道它的暗淡,因为我是一个初学者,但我有我的“登录按钮”保存我的用户名和密码,但我不知道如何让它只在我单击 UISwitch 时保存该信息以及如何保存它在“视图确实加载方法”中。我在这里先向您的帮助表示感谢!!我不知道要在我的 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")

  }

【问题讨论】:

  • 您的问题需要更明确一点,我可以看到您正在将 keepUsername 和 keepPassoword 的值读取为布尔值,NSUserDefaults.standardUserDefaults().boolForKey("keepUsername") 并且您是甚至没有尝试将其保存在任何变量或常量中,所以我很困惑您要存档的内容以便能够为您提供帮助
  • 嘿 IcaroNz,抱歉这个问题含糊不清,但是当我在我的应用程序中输入用户名和密码并按下登录按钮时,我将用户名和密码保存为对象,我仅当“保存用户信息”UISwitch 已打开时,我才试图让它们出现在应用程序中。我在努力了解 UISwitch 方法中包含哪些代码以及如何使用 NSUserdefault 语句正确实现它。我确定我的代码是错误的,但我正在努力寻找资源来帮助我。提前致谢!
  • 目前看起来您在另一个 IBAction 中有一个 IBAction,因为我看不到 LoginButton 的结尾(应该是小写字母)。过去一个更好的代码版本,我会帮助你让它工作。
  • 对不起,我输入的代码很糟糕,希望这能给你一个更清晰的画面。我读到我需要视图中的信息确实加载方法,以便应用程序知道在保存时显示用户名和密码。
  • 我在 Windows 上进行了审查,所以我不能保证我没有遗漏某些内容或拼写错误,但我认为这应该可以为您提供所需的答案。

标签: swift passwords nsuserdefaults uiswitch


【解决方案1】:

我会添加一些我会做的注释和编辑,希望它可以帮助你:

   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() 
  }

【讨论】:

    【解决方案2】:

    我将漏洞页面发送给您,以便您了解和想法,还有一种方法可以为注册页面发送警报消息,查看 //store data

    导入 UIKit

    类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)
    
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2021-11-07
      • 2021-12-07
      • 2012-08-31
      相关资源
      最近更新 更多