Ios Firebase不更新值

Ios Firebase不更新值,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我正在使用FirebaseManagersingleton类从Firebase获取数据。我正在调用我的ViewController中的getAllCharts,它需要这些数据。我最初收到数据,但当我在firebase中更新数据时,它不会更新应用程序中的值(getAllCharts()is从不调用) FirebaseManager: 视图控制器: 如何获取更新?尝试从FirebaseManager.sharedInstance.getAllCharts完成块中删除[weak self]。@Zaid

我正在使用
FirebaseManager
singleton类从Firebase获取数据。我正在调用我的
ViewController
中的
getAllCharts
,它需要这些数据。我最初收到数据,但当我在firebase中更新数据时,它不会更新应用程序中的值(
getAllCharts()
is从不调用)

FirebaseManager:

视图控制器:


如何获取更新?

尝试从
FirebaseManager.sharedInstance.getAllCharts
完成块中删除
[weak self]
。@ZaidPathan我尝试过,但仍然是相同的问题。您也在
引用下添加了断点。子(路径)。观察(.value,带:{(快照)在
中,然后更改Firebase上的值并选中?@ZaidPathan设置断点仅适用于初始调用,此时调用ViewDidLoad。此时我只能获取一次数据,但在该点之后更新值时,我的getAllCharts将不会被调用,此时设置断点无效(我试过了)@ZaidPathan我“修复”了它,我也在AppDelegate中调用了这个getAllCharts()方法,因为我想在应用程序启动时下载数据,删除AppDelegate中的这个调用可以让一切都正常工作。尽管我不知道为什么它现在能正常工作(我宁愿让它先在AppDelegate中下载)
final class FirebaseManager {

    static let sharedInstance = FirebaseManager()

    private init() {}

    private let reference = FIRDatabase.database().reference()

    private var charts = [ChartRepresentable]()

    func getAllCharts(completionHandler: ((_ charts: [ChartRepresentable]) -> ())? = nil) {

        guard let path = FirebasePath.allCharts.path else {
            return
        }

        guard charts.isEmpty else {
            completionHandler?(charts)
            return
        }

        reference.child(path).observe(.value, with: { (snapshot) in

            if snapshot.hasChildren() {

                var availableCharts = [ChartRepresentable]()

                for child in snapshot.children {

                    guard let chartSnapshot = child as? FIRDataSnapshot else {
                        continue
                    }

                    switch chartSnapshot.key {
                    case "bar":
                        availableGraphs.append(BarChart(snapshot: chartSnapshot))
                    case "line":
                        availableGraphs.append(LineChart(snapshot: chartSnapshot))
                    default: break
                    }
                }

                self.charts = availableCharts
                completionHandler?(self.charts)
            }
        })
    }
}
class ViewController: UIViewController {

    var setupCards: [SetupCard]?

    override func viewDidLoad() {
        super.viewDidLoad()

        FirebaseManager.sharedInstance.getAllCharts { [weak self] (charts) in
            self?.setupCards = [SetupCard(charts: charts)]
            self?.setupView.collectionView.reloadData()
            self?.setupView.pageControl.numberOfPages = self?.setupCards?.count ?? 0
        }
}