Swift 中 WiFi 可用时无法恢复线程
Having trouble resuming thread when WiFi is available in Swift
我有以下代码块,用于检查 WiFi 在 Swift 中是否可用:
func start() {
if Reachability.isConnectedToNetwork() == true {
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
if self.viewModel?.dataIsReady == true {
self.performSegueWithIdentifier(StoryboardID.SegueShowFeedVC.rawValue,
sender: self)
}else{
if let viewModel = self.viewModel{
self.onboardThree.startButton.alpha = 0.2
self.onboardThree.activityIndicator.startAnimating()
viewModel.waitingForData = true
}
}
}
} else {
print("Internet connection FAILED")
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
}
我能够成功检查 WiFi,并在 WiFi 关闭时正确地向用户显示警报。但是,我遇到的问题是,当我在应用 运行ning 时打开 WiFi,然后尝试继续 运行 代码块时,它似乎挂起(即我看到 activity 指示器 运行ning 永久),代码似乎没有从这一点开始。谁能看出为什么?
如何调用此函数?例如,您是否有某种计时器每 x 秒运行一次,然后调用此函数或代码中某处调用此函数的回调?
在没有看到更多你当前设置的内容的情况下,在我看来(完全脱离我可用的代码)你只涵盖了两种情况:
- Start 函数已调用,但没有互联网连接 - 显示警报
- Start 函数被调用并且有网络连接但数据尚未准备好 - 显示微调器
当您的数据为 "ready" 时,是否再次调用 Start 函数?
我有以下代码块,用于检查 WiFi 在 Swift 中是否可用:
func start() {
if Reachability.isConnectedToNetwork() == true {
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
if self.viewModel?.dataIsReady == true {
self.performSegueWithIdentifier(StoryboardID.SegueShowFeedVC.rawValue,
sender: self)
}else{
if let viewModel = self.viewModel{
self.onboardThree.startButton.alpha = 0.2
self.onboardThree.activityIndicator.startAnimating()
viewModel.waitingForData = true
}
}
}
} else {
print("Internet connection FAILED")
let alert = UIAlertView(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", delegate: nil, cancelButtonTitle: "OK")
alert.show()
}
}
我能够成功检查 WiFi,并在 WiFi 关闭时正确地向用户显示警报。但是,我遇到的问题是,当我在应用 运行ning 时打开 WiFi,然后尝试继续 运行 代码块时,它似乎挂起(即我看到 activity 指示器 运行ning 永久),代码似乎没有从这一点开始。谁能看出为什么?
如何调用此函数?例如,您是否有某种计时器每 x 秒运行一次,然后调用此函数或代码中某处调用此函数的回调?
在没有看到更多你当前设置的内容的情况下,在我看来(完全脱离我可用的代码)你只涵盖了两种情况:
- Start 函数已调用,但没有互联网连接 - 显示警报
- Start 函数被调用并且有网络连接但数据尚未准备好 - 显示微调器
当您的数据为 "ready" 时,是否再次调用 Start 函数?