致命错误:意外地发现零,而展开一个可选值解析注册
问题描述:
我试图做一个注册页面,但由于某种原因,我不断收到同样的错误“致命错误:意外地发现零,同时解包可选值”当我在模拟器中测试它时,“let username = self.usernameField.text”这一行。我知道错误有事情做一个值是零,但是无法弄清楚如何解决它,请帮助:(致命错误:意外地发现零,而展开一个可选值解析注册
代码=
@IBOutlet weak var emailField: UITextField?
@IBOutlet weak var usernameField: UITextField?
@IBOutlet weak var passwordField: 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 signUpAction(sender: AnyObject) {
let username = self.usernameField!.text
let password = self.passwordField!.text
let email = self.emailField!.text
let finalEmail = email!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
// Validate the text fields
if username?.characters.count < 5 {
let alert = UIAlertView(title: "Invalid", message: "Username must be greater than 5 characters", delegate: self, cancelButtonTitle: "OK")
alert.show()
} else if password?.characters.count < 8 {
let alert = UIAlertView(title: "Invalid", message: "Password must be greater than 8 characters", delegate: self, cancelButtonTitle: "OK")
alert.show()
} else if email?.characters.count < 8 {
let alert = UIAlertView(title: "Invalid", message: "Please enter a valid email address", delegate: self, cancelButtonTitle: "OK")
alert.show()
} else {
// Run a spinner to show a task in progress
let spinner: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0, 0, 150, 150)) as UIActivityIndicatorView
spinner.startAnimating()
let newUser = PFUser()
newUser.username = username
newUser.password = password
newUser.email = finalEmail
// Sign up the user asynchronously
newUser.signUpInBackgroundWithBlock({ (succeed, error) -> Void in
// Stop the spinner
spinner.stopAnimating()
if ((error) != nil) {
let alert = UIAlertView(title: "Error", message: "\(error)", delegate: self, cancelButtonTitle: "OK")
alert.show()
} else {
let alert = UIAlertView(title: "Success", message: "Signed Up", delegate: self, cancelButtonTitle: "OK")
alert.show()
dispatch_async(dispatch_get_main_queue(), {() -> Void in
let viewController:UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Home")
self.presentViewController(viewController, animated: true, completion: nil)
})
}
})
答
尝试......
import Foundation
import Parse
import UIKit
class LoginViewController: UIViewController {
@IBOutlet weak var userNameTF: UITextField!
@IBOutlet weak var passWordTF: UITextField!
@IBOutlet weak var emailTF: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func SignUp(sender: AnyObject) {
signUp()
}
@IBAction func Login(sender: AnyObject) {
login()
}
func signUp() {
let user = PFUser()
user.username = userNameTF.text
user.password = passWordTF.text
user.email = emailTF.text
// other fields can be set if you want to save more information
// user["phone"] = "650-555-0000"
user.signUpInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
if error == nil {
print("Sign Up Succesful")
} else {
print("Sign Up Failed")
}
}
}
func login() {
let user = PFUser()
user.username = userNameTF.text
user.password = passWordTF.text
PFUser.logInWithUsernameInBackground(userNameTF.text!, password: passWordTF.text!, block: {
(user: PFUser?, Error: NSError?) -> Void in
if Error == nil {
dispatch_async(dispatch_get_main_queue()) {
var Storyboard = UIStoryboard(name: "Main", bundle: nil)
var AfterLoginVC: UIViewController = Storyboard.instantiateViewControllerWithIdentifier("AfterLoginVC") as! UINavigationController
self.presentViewController(AfterLoginVC, animated: true, completion: nil)
}
} else {
print("Login Error, check credentials")
}
})
}
}
“AterLoginVC”是在成功尝试登录后想要实例化的视图控制器的故事板标识符,然后可以添加if/else语句来评估条件并将错误返回给用户
您的网点是否连线? “@IBOutlet usernameField”旁边的小圆圈是否填满?如果它是空心的,则从该圈子拖动到Storyboard中的用户名字段。 – vacawama
可能重复的[致命错误:意外地发现零,而解包可选值](http://*.com/questions/24643522/fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-values) – GoZoner