如何在 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 返回数据?如果你没有,那么这就是为什么userID
是nil
。另外,您声明了两次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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章