До появления этой проблемы я использовал раскадровки и розетки для текстовых полей. Однако мне стало проще работать с моим приложением программно. К сожалению, когда я начал преобразовывать свое приложение, например, программно создавая текстовое поле, я столкнулся с некоторыми проблемами, так как у меня все еще есть некоторые функции, такие как функция входа в систему, которая была создана для текстовых полей из раскадровок. Я все еще новичок, поэтому любые решения будут полезны.
Я объявил свое текстовое поле электронной почты как таковое:
var emailTxt: UITextField!
Другие аспекты текстового поля электронной почты как таковые находятся в просмотр действительно загрузил функцию:
emailTxt = UITextField(frame: CGRect(x: 77.0, y: 306.0, width: 262, height: 34))
emailTxt.backgroundColor = .white
emailTxt.borderStyle = .roundedRect
emailTxt.keyboardAppearance = .light
emailTxt.keyboardType = .emailAddress
emailTxt.placeholder = "Email"
emailTxt.font = UIFont.systemFont(ofSize: 14.0)
emailTxt.textColor = .systemGreen
emailTxt.tintColor = .systemGreen
emailTxt.delegate = self
self.view.addSubview(emailTxt)
Функции текстового поля за пределами представления загрузились:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
}
Наконец, область, в которой я получаю проблемы.
Во-первых, он говорит, что для оператора защиты должен быть оператор else.
Затем он говорит (Бинарный оператор '! =' Не может применяться к операндам типа 'UITextField?' И 'String') Затем в операторе else говорится (выражение закрытия не используется)
Наконец, в операторе auth выдается ошибка: невозможно преобразовать значение типа 'UITextField' в ожидаемый тип аргумента 'String', в то время как подчеркнув письмо
Вот код для этого:
guard let email = emailTxt
email != "",
let password = passwordTxt
password != ""
else {
AlertController.showAlert(self, title: "Missing Info", message: "Please fill out all fields")
return
}
Auth.auth().signIn(withEmail: email, password: password, completion: {(user, error) in
guard error == nil else {
AlertController.showAlert(self, title: "Error", message: error!.localizedDescription)
return
}