我正在创建我的第一个应用程序(和迅速的新手)。当我从Facebook登录时,名称和电子邮件会保存在Firestore中。我试图将名称从facebook设置为变量,以在其他地方使用它,但是我无法分配该值,控制台中始终显示“ nil”。有人可以帮我吗?


我设置变量


var userN: String?



我从Firestore获取数据


func readDatabase(){

    let db = Firestore.firestore()
    let docRef = db.collection("users").document("email")


    docRef.getDocument { (document, error) in
        if let document = document, document.exists {
            let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
            print("Document data: \(dataDescription)")

            let data = document.data()

            let userName = data!["name"]! as! String
            print(userName)

            let userEmail = data!["email"]! as! String
            print(userEmail)

let containerController = ContainerController()
            let containerController.userN = userName;
            return
        }
    }

}


我想分配userN = userName,以便在其他视图中使用
我怎样才能做到这一点?谢谢

最佳答案

如果您使用的是StoryBoards,则可以通过segue函数进行传递。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "YourStoryBoardSegue" {
            if let viewController = segue.destination as? ContainerController {
                viewController.userN = userName
            }
        }
   }


否则,最佳做法是使用委托方法。

搜索堆栈溢出,以获取使用委托传递数据的最佳实践。

关于swift - 从Firestore分配用户名值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56919056/

10-09 04:21