gpt4 book ai didi

swift - 在 Swift 应用程序中无法检测 Firebase 连接状态

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

我在使用我的 Swift 应用程序检测 Firebase 连接状态时遇到了问题。一旦我的 View Controller 启动,它就会立即显示,并且 alertView 显示我的连接状态已关闭。无论应用程序启动时的实际状态如何,它每次都会这样做。一旦应用程序启动,连接状态就会可靠地报告。即使当我切换到另一个 View Controller 并返回到原始 View Controller 时,它也不会再次报告连接断开。它仅在应用程序首次启动时发生。这是我在 viewDidLoad 方法中实现连接状态检测的代码。有人有什么建议吗?

override func viewDidLoad() {

//Do these things once when the app first starts up
super.viewDidLoad()

mapView.delegate = self

setMapInitialState()

let connectedRef = FIRDatabase.database().referenceWithPath(".info/connected")
connectedRef.observeEventType(.Value, withBlock: {snapshot in

let connected = snapshot.value as? Bool
if connected != nil && connected! {
self.showAlertView("Alert", message: "Connection to server restored - all pending catches will be updated")
self.refreshCatches()
} else {
self.showAlertView("Alert", message: "Connection to server lost - catches by others may not be up to date")
}

})

}

最佳答案

我首选的处理方法是实现一个跟踪连接状态的共享实例。我有一个 isConnected bool 值,它会根据 .info/connected 值在 true 和 false 之间切换,但我认为拥有另一个 bool 值也很重要,hasConnected

hasConnectedfalse 实例化,除非我们收到连接结果,否则不会更改。这意味着当应用首次报告它的断开连接结果时,您可以检查 hasConnected bool 值以确定它是否实际上曾经连接过。您可能只想禁用连接警报,直到 hasConnectedtrue

let connectedRef = FIRDatabase.database().referenceWithPath(".info/connected")
connectedRef.observeEventType(.Value, withBlock: { (connected) in
if let boolean = connected.value as? Bool where boolean == true {
print("connected")
self.hasConnected = true
self.isConnected = true
} else {
print("disconnected")
self.isConnected = false
}
})

如果您需要了解更多信息,请告诉我。

关于swift - 在 Swift 应用程序中无法检测 Firebase 连接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37536060/

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