Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Can someone help me about this issue? The first error was "value of type 'authdataresult' has no member 'uid'".

Auth.auth()?.signIn(withEmail: email, password: password, completion:

So I removed the question mark to resolve the problem and it worked! But after that, another error came and it said "Value of type 'AuthDataResult' has no member 'uid'". I know, it's irritating.

self.userUid = user.uid

And oh, there's another error and it's been in my project for a very long time so now i'm ignoring it but then if someone knows how to fix it please let me know. The error is "only instance methods can be declared @ibaction".

@IBAction func signInTapped(_ sender: Any) {

I don't know why but maybe the 3 errors are connected. I don't know. Help. So now I'm stuck again. Here is the whole messed up coding stuff.

import UIKit
import Firebase

class ViewController: UIViewController {
    @IBOutlet weak var emailField: UITextField!
    @IBOutlet weak var passwordField: UITextField!

    var userUid: String!

    func goToCreateUserVC(){
        performSegue(withIdentifier: "SignUp", sender: nil)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "SignUp" {
            if let destination = segue.destination as? userVC {
                if userUid != nil {
                    destination.userUid = userUid
                }
                if emailField.text != nil {
                    destination.emailField = emailField.text
                }
                if passwordField.text != nil {
                    destination.passwordField = passwordField.text
                }
            }
        }

        @IBAction func signInTapped(_ sender: Any) {
            if let email = emailField.text, let password = passwordField.text {
                Auth.auth().signIn(withEmail: email, password: password, completion: { (user,error) in
                    if error == nil {
                        if let user = user {
                            self.userUid = user.uid
                            self.goToCreateUserVC()
                        }
                    } else {
                        self.goToCreateUserVC()
                    }
                });
            }
        }
    }
}

Like I swear, I tried to fix it and then 9 errors just popped out. By the way, I'm using Xcode 9, Swift 4, and my Cocoapods are up-to-date. To those all around people who edit, comment, or judge questions, please this is not a duplicate question. They are 2 different errors.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
990 views
Welcome To Ask or Share your Answers For Others

1 Answer

It seems that Google has made some changes to Firebase Auth with the 5.0.0 update. This worked for me:

self.userUid = user.user.uid

I'm not sure what was the point of the change but it still works exactly the same.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...