2015-05-25 3 views
0

Ive искал много потоков, и это мое последнее средство, потому что Ive видел, что этот вопрос задавался разными способами, но не точно для быстрого и для сохранения имени пользователя и пароля. Я хочу, чтобы мой UISwitch включался, чтобы сохранить информацию о моем имени и пароле. Я пробовал весь день, чтобы этот UISwitch сохранил мое имя пользователя и пароль, используя NSUserDefaults. Пожалуйста, помогите мне. Я нахожусь на своем пути, пытаясь это сделать, я искал почти каждый форум, чтобы найти ответ, но не многие люди показывают вам, как его реализовать. Ниже мой код. Я знаю его мрачный, поскольку я новичок, но у меня есть моя «кнопка входа», сохраняющая мое имя пользователя и пароль, но я не знаю, как заставить его сохранять эту информацию только тогда, когда я нажимаю UISwitch и как ее сохранить в режиме «view did load». Спасибо за помощь в продвижении!! Я не знаю, какой код включить в мой метод UISwitch. Вот первая часть моей кнопки входа в систему, а затем мой вид действительно загрузил метод. У меня нет никакого кода для UISwitchMethodСохранение имени пользователя и пароля с помощью UISwitch в Swift

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") 

    } 
+0

Вы должны быть немного более четко в вашем вопросе, я вижу, что вы читаете значения keepUsername и keepPassoword, как логическое значение, NSUserDefaults.standardUserDefaults(). BoolForKey («keepUsername») и вы даже не пытаетесь сохранить его в любой переменной или константе, поэтому я смущаюсь о том, что вы пытаетесь архивировать, чтобы помочь вам – Icaro

+0

Эй, IcaroNz, извините за неопределенность вопроса, но когда я ввожу имя пользователя и пароль в мое приложение и нажмите кнопку «Вход», я сохраняю имя пользователя и пароль в качестве объектов, и я пытаюсь, чтобы они отображались в приложении, только если включена опция «сохранить информацию о пользователе» UISwitch. Я пытаюсь понять, какой код включить в метод UISwitch и как правильно его реализовать с помощью инструкций NSUserdefault. Я уверен, что мой код ошибочен, но я пытаюсь найти ресурсы, чтобы помочь мне. Заранее спасибо! –

+0

На данный момент, похоже, у вас есть IBAction внутри другого IBAction, поскольку я не вижу конца LoginButton (что должно быть строчным). Прошла лучшая версия кода, и я помогу вам заставить ее работать. – Icaro

ответ

2

Я добавлю некоторые заметки и изменения, я бы делать, и я надеюсь, что это может помочь вам:

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

Я посылаю вам страницу отверстия, чтобы вы может получить и идеи, а также есть способ, которым вы можете отправлять предупреждающие сообщения на странице регистра, смотрите в // хранить данные

импорт 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) 

} 

}

Смежные вопросы