/ /タイプ「UITextField」を期待される引数タイプ「String」に一致させることはできません-swift、firebase、variables、uitextfield、firebase-authentication

タイプ「UITextField」を期待される引数タイプ「String」と連携させることはできません-swift、firebase、variables、uitextfield、firebase-authentication

だから私はこれに本当に苦労していて、なぜtbhなのかわかりません。

ユーザー名を強制するさまざまな方法を試しました(メールアドレス)をテキストフィールドから文字列に変換します。変換したり、入力を文字列として受け入れたりすることはできません。ログイン機能の残りの部分を書いている間、これを取得するためにほぼ1日とばかげて試みていましたが、これにより、機能しなくなったり、他のエラーが表示されたりします。

Auth.auth().signIn(withEmail: username, password: password, completion: { user, エラー

私のテキストフィールドはユーザー名と呼ばれます。(String(username))をStringなどに変換しようとしました。varを作成してStringにしようとしましたが、これではエラーが増えるだけで、問題があると思います。

助けてください。

回答:

回答№1は0

もしあなたが UITextField 名前 username 次の方法でテキストフィールドからテキストを取得します。 username.textこれは、 String?.

見る https://developer.apple.com/documentation/uikit/uitextfield/1619635-text


回答№2の場合は0
func performLogin() {
//Logging In
Auth.auth().signIn(withEmail: username, password: password, completion: { user, error in
if (error != nil){
errorLabel = error1 //"There has been an Error " + "No User Found"
//Could Not Login, Attempt to Create user

//Creating Account
Auth.auth().createUserWithEmail(self.username, password: self.password!, completion: { user, error in

回答№3の場合は0

なぜなら UITextField はありません String しかし、それはと呼ばれる文字列である値を持っています text。これを取得するには、コードを変更するだけです

Auth.auth().signIn(withEmail: username.text, password: password.text, completion: { user,...

しかし、あなたが言ったように text はオプションの文字列であるため、エラーが発生します。関数は明示的な文字列を予期しています

のテキスト値 UITextField はオプションです。つまり、値がnilにならないことを保証できます。Swiftの基本とオプションと明示の詳細を読む必要がありますが、ここに簡単な解決策があります。

サインインで変数を渡す前に、を使用して変数をアンラップできます。 guard ステートメント

guard let usernameString = username.text else {
// Handle no username, show an alert etc
return
}

guard let passwordString = password.text else {
// Handle no password, show an alert etc
return
}

Auth.auth().signIn(withEmail: usernameString, password: passwordString, completion: { user,...

回答№4の場合は0

ねえ、私はFirebaseでアプリを作成しています。電子メールでユーザーを作成しようとしたときに、テキストフィールドなどで同じ問題が発生しました。関数に組み込んだだけで、夢のように機能します...

 func signIn() {
Auth.auth().signIn(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
print(user?.uid)
if error != nil {
self.displayAlert(title: "Error", message: (error!.localizedDescription))
} else {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loggedInView = storyboard.instantiateViewController(withIdentifier: "Today")
self.present(loggedInView, animated: true,  completion: nil)
}
}
}

それを行うための素晴らしい簡単な方法です。

希望が役立ちます。