如何在 UILabel 中显示名字?我正在使用 Firebase 和 Swift 开发 IOS 应用程序

Posted

技术标签:

【中文标题】如何在 UILabel 中显示名字?我正在使用 Firebase 和 Swift 开发 IOS 应用程序【英文标题】:How to display firstname in UILabel?I am developing IOS app with Firebase and Swift 【发布时间】:2017-03-31 14:01:06 【问题描述】:

我正在使用 Firebase 和 Swift 练习 ios 应用程序。

这是一个用户使用用户名和密码登录的基本应用程序。用户可以注册、登录和注销。为此,我创建了 3 个视图控制器。一个用于用户登录,第二个用于注册,第三个用于显示用户的名字和图片。

我创建了一个视图控制器“loginPageViewController”来显示用户的名字和图片。我正在尝试在“userFirstName”标签中显示名字。但我做不到。屏幕截图中附有错误消息。

补充:

Error is occured here

Storyboard

Swift 代码:

import UIKit
import Firebase
import FirebaseAuth

class loginPageViewController: ViewController 

@IBOutlet weak var userFirstName: UILabel!
@IBOutlet weak var userImage: UIImageView!

let userID = FIRAuth.auth()?.currentUser?.uid

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


override func viewDidAppear(animated: Bool) 
    super.viewDidAppear(animated)

    let userID = (FIRAuth.auth()?.currentUser?.uid)!

    ref.child("expatsappmembers").child(userID).observeSingleEventOfType(
        .Value, withBlock:  (snapshot) in
            let firstName = snapshot.value!["firstName"] as! String
            self.userFirstName.text = firstName
    )


@IBAction func LogoutButtoninLoginPage(sender: AnyObject) 

    if FIRAuth.auth()?.currentUser != nil //there is a user signed in

        do

        try FIRAuth.auth()?.signOut()

            if FIRAuth.auth()?.currentUser == nil

                let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("InitialView") as? ViewController

                self.presentViewController(loginVC!, animated: true, completion: nil)
                   

        catch let signOutError as NSError
        print ("Erros signing out: %@", signOutError)
        

       

" 任何建议都会对我有很大帮助。 提前谢谢你。

【问题讨论】:

这个错误意味着你的userID中有一个nil 为什么我是零?在用户 ID 中。我是否给孩子正确的价值观?请帮忙。 我对 Firebase 非常熟悉,但是您在哪里发出网络请求让 Firevase 返回数据?如果你没有,那么这就是为什么userIDnil。另外,您声明了两次userID,一次在开头,一次在viewDidAppear 我已经导入了“import Firebase import FirebaseAuth”。我还完成了与 Firebase 交互的所有步骤。 【参考方案1】:

在用户登录之前,FIRAuth.auth()?.currentUser?.uid 为零。问题是你强制打开它(!)。 您应该首先检查用户是否已登录,然后才能继续执行您的逻辑。

我会从这个开始:

if let userID = FIRAuth.auth()?.currentUser?.uid  
    ref.child("expatsappmembers").child(userID).observeSingleEventOfType(
        .Value, withBlock:  (snapshot) in
            if let firstName = snapshot.value?["firstName"] as? String 
                self.userFirstName.text = firstName
            
    )

【讨论】:

覆盖 func viewDidAppear(animated: Bool) super.viewDidAppear(animated) if FIRAuth.auth()?.currentUser != nil if let userID = FIRAuth.auth()?.currentUser?. uid ref.child("expatsappmembers").child(userID).observeSingleEventOfType(.Value, withBlock: (snapshot) in let firstName = snapshot.value!["firstName"] as! String self.userFirstName.text = firstName ) 为什么我的用户 ID 为零。我给孩子正确的价值观吗 ref.child("expatsappmembers").child(userID).observeSingleEventOfType Nil userID 只是因为用户退出,或者时间问题,因为成功登录后可能需要几秒钟才能更新。

以上是关于如何在 UILabel 中显示名字?我正在使用 Firebase 和 Swift 开发 IOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在UILabel iOS中显示表情符号

UILabel 的 numberOfLines 在单元格中不起作用

如何在iphone中突出显示UILabel的单词

在 UILabel 中显示浮点数

如何将 NSArray 值设置为 UILabel

我不知道如何将 UILabel 转换为 UIImage.[swift] [重复]