gpt4 book ai didi

ios - 整个应用生命周期中的 Firebase 观察者

转载 作者:可可西里 更新时间:2023-11-01 01:22:49 24 4
gpt4 key购买 nike

我正在尝试创建一个在整个应用程序生命周期中都保持事件状态的 firebase 观察器。我想要的是在 firebase 中的某些数据发生变化时更改 tabBarController 的属性。这是我的代码:

self.ref.child("mySubRef").observe(.value , with: {snapshot in

self.tabBarController?.tabBar.items?[3].badgeValue = "!"

})

因此,我尝试在我的第一个 viewController 的 viewDidLoad 和 viewDidAppear 中创建它。我不删除它,因为我希望它始终存在。在 viewDidAppear 中,它仅在我在更改时位于该 viewController 中时才有效。如果我希望无论我身在何处(总是在 tabBar 内)都会发生这种变化,我必须将代码放在哪里?

感谢您的帮助!

最佳答案

我找到了答案。问题是当我在 viewControllers 之间切换时,对观察者的引用被释放。所以,为了修复它,我创建了一个这样的类:

class NotificationListener: NSObject {

let ref:FIRDatabaseReference = FIRDatabase.database().reference()
var user:User?

func setUpListener(tabBarController:UITabBarController){

self.user = User()
self.ref.child("users/" + self.user!.uid + "/notifications").observe(.value , with: {snapshot in

tabBarController.tabBar.items?[3].badgeValue = "!"

})

}

}

现在我在每个 viewController 中都有那个类的一个属性,每个 viewController 都有对同一个对象的引用。当我在 VC 之间切换时,它不会释放对象,因为它仍将被引用。

关于ios - 整个应用生命周期中的 Firebase 观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157682/

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