Я знаю, что в Интернете есть множество сообщений об этом, я также знаю, что означает это сообщение об ошибке, я сталкивался с ним не менее 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