gpt4 book ai didi

ios - 如果单例中的值发生变化,则更新标签

转载 作者:行者123 更新时间:2023-11-28 16:02:26 25 4
gpt4 key购买 nike

我正在从 Firebase 获取一些用户信息并将其存储到单例中。之后,每次值发生变化时,我都希望标签也发生变化,但直到我终止应用程序并返回时它才会发生变化。

如果值在单例中发生变化,我应该如何更新标签?

我有选项卡 View 。在第一个选项卡中,我分配值,在第二个选项卡中,我尝试将值添加到标签中。

这是我的单例:

class CurrentUser: NSObject
{
var generalDetails: User = User()/// Consecutive declarations on a line must be separated by ';'

static let sharedInstance = CurrentUser()


fileprivate override init(){
super.init()
}

}

像这样我赋值:

self.databaseRef.child("users").child(user.uid).observeSingleEvent(of: .value) { (snapshot:FIRDataSnapshot) in

guard let firebaseValue = snapshot.value as? [String:AnyObject], let userName = firebaseValue["username"] as? String, let email = firebaseValue["email"] as? String, let reputation = firebaseValue["reputation"] as? Int, let profilePicURL = firebaseValue["profileImageUrl"] as? String
else
{
print("Error with FrB snapshot")//Here
return
}

//Set values
self.currentUser.generalDetails = User(userName: userName, email: email, reputation: reputation, profileImageURL: profilePicURL, uid: user.uid)
}

如果我想给标签赋予值(value),我只需这样做(这种声誉是唯一可以经常改变的东西):

self.reputationLabel.text = String(self.currentUser.generalDetails.reputation)

最佳答案

您可以执行以下任一操作:-

  • 使用委托(delegate)协议(protocol)方法在单例和您的类之间进行通信,每当您的存储库更改并更新您的标签时触发类中的委托(delegate)方法。

  • 在您的网络链接中打开一个不同的线程,以获取用户在 viewController 本身中的声誉:-

    override func viewDidLoad() {
    super.viewDidLoad()

    FIRDatabase.database().reference().child("users").child(FIRAuth.auth()!.currentUser!.uid).child("reputation").observe(.childChanged, with: {(Snapshot) in

    print(Snapshot.value!)
    //Update yor label
    })

    每次声誉值发生变化时都会调用它。

关于ios - 如果单例中的值发生变化,则更新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40817118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com