我正在创建这个名为imagur的应用程序,它有一个注册和登录,每当我离开应用程序时用户已经拥有一个帐户,我希望它自动识别用户我将如何做到这一点这是我到目前为止:
import UIKit
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
var signupActive = true
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
func displayAlert(title:String, error:String) {
var alert = UIAlertController(title: title, message: error, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in
self.dismissViewControllerAnimated(true, completion: nil)
}))
self.presentViewController(alert, animated: true, completion: nil)
}
@IBOutlet var username: UITextField!
@IBOutlet var password: UITextField!
@IBOutlet var alreadyRegistered: UILabel!
@IBOutlet var signUpButton: UIButton!
@IBOutlet var signUpLabel: UILabel!
@IBOutlet var signUpToggleButton: UIButton!
@IBAction func toggleSignUp(sender: AnyObject) {
if signupActive == true {
signupActive = false
signUpLabel.text = "Use the form below to log in"
signUpButton.setTitle("Log In", forState: UIControlState.Normal)
alreadyRegistered.text = "Not Registered?"
signUpToggleButton.setTitle("Sign Up", forState: UIControlState.Normal)
} else {
signupActive = true
signUpLabel.text = "Use the form below to sign up"
signUpButton.setTitle("Sign Up", forState: UIControlState.Normal)
alreadyRegistered.text = "Already Registered?"
signUpToggleButton.setTitle("Log In", forState: UIControlState.Normal)
}
}
@IBAction func signUp(sender: AnyObject) {
var error = ""
if username.text == "" || password.text == "" {
error = "Please enter a username and password"
}
if error != "" {
displayAlert("Error In Form", error: error)
} else {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
if signupActive == true {
var user = PFUser()
user.username = username.text
user.password = password.text
user.signUpInBackgroundWithBlock {
(succeeded: Bool!, signupError: NSError!) -> Void in
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
if signupError == nil {
// Hooray! Let them use the app now.
println("signed up")
} else {
if let errorString = signupError.userInfo?["error"] as? NSString {
error = errorString
} else {
error = "Please try again later."
}
self.displayAlert("Could Not Sign Up", error: error)
}
}
} else {
PFUser.logInWithUsernameInBackground(username.text, password:password.text) {
(user: PFUser!, signupError: NSError!) -> Void in
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
if signupError == nil {
println("logged in")
} else {
if let errorString = signupError.userInfo?["error"] as? NSString {
error = errorString
} else {
error = "Please try again later."
}
self.displayAlert("Could Not Log In", error: error)
}
}
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
哦,我也在使用Parse。
答案 0 :(得分:2)
如果你想要做的就是记住用户在应用程序关闭/重新启动时登录,那么你可以使用NSUserDefaults保存这个事实并在启动时检查NSUserDefaults。这是一种非常简单的方法。
使用核心数据只是为了在用户登录时持久存在可能有点过分。
如果您确实需要记住他们的用户名和密码,那么这完全是另一个问题。在此方案中,您应该不用户核心数据或NSUserDefaults。要安全地存储用户凭据,您需要在安全框架中使用Keychain Service。
答案 1 :(得分:0)
如果您想要做的就是记住用户在应用程序关闭/重新启动时登录,那么您可以使用NSUserDefaults保存该事实并在启动时检查NSUserDefaults。这是一种非常简单的方法。
使用核心数据只是为了在用户登录时持久存在可能有点过分。
如果您确实需要记住他们的用户名和密码,那么这完全是另一个问题。在此方案中,您不应使用Core Data或NSUserDefaults。要安全地存储用户凭据,您需要在安全框架中使用Keychain服务。