/ / Nie je možné koncertovať typ „UITextField“ s očakávaným typom argumentu „String“ - rýchly, firebase, premenné, uitextfield, firebase-autentifikácia

Nie je možné použiť typ koncertuUITextField na očakávaný typ argumentu String - rýchly, firebase, premenné, uitextfield, firebase-authentication

Takže s tým skutočne bojujem a neviem prečo.

Vyskúšal som rôzne spôsoby, ako si vynútiť svoje používateľské meno(e-mailová adresa) na reťazec z textového poľa. Len nemôžem dostať tú prekliatú vec, aby konvertovala alebo prijala vstup ako reťazec. Smiešne som sa snažil takmer celý deň, aby som to dosiahol. Medzitým som napísal zvyšok svojej funkcie Login, ale to jej bráni v práci alebo mi umožnilo vidieť ďalšie chyby.

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

Moje textové pole sa volá používateľské meno.Snažil som sa previesť (String (používateľské meno)) ako String a podobne, pokúsil som sa vytvoriť var a nechať ho vytvoriť String, ale to produkuje iba viac chýb, myslím si, že vec je poškodená!

Prosím pomôžte.

odpovede:

0 pre odpoveď č. 1

Ak máte UITextField pomenovaný username text z textového poľa získate takto: username.text, ktorý vráti a String?.

vidieť https://developer.apple.com/documentation/uikit/uitextfield/1619635-text


0 pre odpoveď č. 2
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

0 pre odpoveď č. 3

pretože UITextField nie je String ale má hodnotu, ktorá sa volá reťazec text. Ak to chcete urobiť, zmeňte svoj kód

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

Ako ste však spomenuli text je voliteľný reťazec, a preto sa vám zobrazuje chyba, funkcia očakáva explicitný reťazec

Textová hodnota a UITextField je voliteľné, čo znamená, že môžete zaručiť, že jeho hodnota nebude nulová. Mali by ste si prečítať viac o základoch Swift a nepovinných vs explicitných, ale tu je jednoduché riešenie.

Pred odovzdaním premenných v prihlásení ich môžete rozbaliť pomocou a guard výkaz

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,...

0 pre odpoveď č. 4

Ahoj, tak som pripravoval svoju aplikáciu vo Firebase, janarazil na rovnaký problém s mojimi textovými poľami atď., keď sa pokúšal vytvoriť používateľa pomocou e-mailu. Práve som to zabudoval do funkcie a funguje to ako sen ...

 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)
}
}
}

je to pekný ľahký spôsob, ako to urobiť.

Dúfam, že to pomôže.