ฉันรู้ว่ามีโพสต์มากมายบนอินเทอร์เน็ตเกี่ยวกับเรื่องนี้ ฉันรู้ว่าข้อความแสดงข้อผิดพลาดนี้หมายถึงอะไร ฉันพบมันอย่างน้อย 50 ครั้ง แม้ว่าฉันจะลองมาประมาณ 1 ชั่วโมงแล้ว แต่ฉันไม่รู้ว่าทำไมฉันถึงได้รับข้อผิดพลาดในรหัสนี้:
usernameSignUp?.setPadding()
emailSignUp?.setPadding()
passwordSignUp?.setPadding()
usernameSignUp?.setBottomBorder()
emailSignUp?.setBottomBorder()
passwordSignUp?.setBottomBorder()
emailSignIn?.setPadding()
emailSignIn?.setBottomBorder()
passwordSignIn?.setPadding()
passwordSignIn?.setBottomBorder()
signUpButton?.layer.cornerRadius = 4
}
func validateFields() -> String? {
if usernameSignUp.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
emailSignUp.text?.trimmingCharacters(in: .whitespacesAndNewlines) == "" ||
passwordSignUp.text?.trimmingCharacters(in: .whitespacesAndNewlines) == ""{
return "Please fill in all fields"
}
let cleanedPassword = passwordSignUp.text!.trimmingCharacters(in: .whitespacesAndNewlines)
if isPasswordValid(cleanedPassword) == false {
return "8 characters or more"
}
return nil
}
@IBAction func signUpTapped(_ sender: Any) {
let error = validateFields()
if error != nil {
showError(error!)
}
else {
let userName = usernameSignUp.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let email = emailSignUp.text!.trimmingCharacters(in: .whitespacesAndNewlines)
let password = passwordSignUp.text!.trimmingCharacters(in: .whitespacesAndNewlines)
Auth.auth().createUser(withEmail: email, password: password) { (result, error) in
if error != nil {
self.showError("Invalid email")
}
else {
let db = Firestore.firestore()
db.collection("users").addDocument(data: ["username": userName, "uid": result!.user.uid]) { (error) in
if error != nil {
self.showError("Username could not be created")
}
}
self.transitionToHome()
}
}
}
}
func isPasswordValid(_ password : String) -> Bool {
let passwordTest = NSPredicate(format: "SELF MATCHES %@", ".{8,}")
return passwordTest.evaluate(with: password)
}
func showError(_ message:String) {
errorLabel.text = message
errorLabel.alpha = 1
}
func transitionToHome() {
let homeViewController = storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? ViewController
view.window?.rootViewController = homeViewController
view.window?.makeKeyAndVisible()
}
@IBAction func emailLoginTapped(_ sender: Any) {
}
@IBAction func loginTapped(_ sender: Any) {
if let emailsignin = emailSignIn.text?.trimmingCharacters(in: .whitespacesAndNewlines),
let passwordsignin = passwordSignIn.text?.trimmingCharacters(in: .whitespacesAndNewlines) {
Auth.auth().signIn(withEmail: emailsignin, password: passwordsignin) { (result, error) in
if error != nil {
self.errorLabel3.text = error!.localizedDescription
self.errorLabel3.alpha = 1
}
else {
self.transitionToHome()
}
}
}
}
}
มันเกิดขึ้นในโค้ดสองบรรทัดแรก หากใครสามารถช่วยได้ก็จะได้รับการชื่นชมอย่างมาก
.text
ของemailSignIn
หรือpaasswordSignIn
คือnil
คุณคาดหวังให้เราช่วยคุณทราบได้อย่างไรว่าทำไม โดยไม่ทราบว่าคุณให้ค่าแก่สิ่งเหล่านั้นอย่างไร - person New Dev   schedule 02.07.2020emailSignIn.text
และ/หรือpasswordSignIn.text
ไม่เป็นnil
ดังนั้นสถานที่ให้บริการนี้ควรได้รับการกำหนดค่า แต่ไม่ใช่ มันไม่ได้อยู่ในรหัสที่คุณแสดง กล่าวอีกนัยหนึ่ง จุดบกพร่องของคุณไม่สามารถทำซ้ำได้ด้วยโค้ดที่คุณโพสต์ในคำถาม - person New Dev   schedule 02.07.2020emailSignIn
และpasswordSignIn
เป็นเพียงช่องข้อความที่ผู้ใช้กรอกเพื่อลงชื่อเข้าใช้ ฉันเดาว่าคำถามของฉันคือ ฉันจะป้องกันไม่ให้สิ่งนี้กลายเป็นศูนย์ได้อย่างไร - person appledeveloper123   schedule 02.07.2020nil
ก่อนที่คุณจะดำเนินการบางอย่างที่อาศัยค่าเหล่านี้ - person New Dev   schedule 02.07.2020