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 秒运行一次,然后调用此函数或代码中某处调用此函数的回调?

在没有看到更多你当前设置的内容的情况下,在我看来(完全脱离我可用的代码)你只涵盖了两种情况:

  1. Start 函数已调用,但没有互联网连接 - 显示警报
  2. Start 函数被调用并且有网络连接但数据尚未准备好 - 显示微调器

当您的数据为 "ready" 时,是否再次调用 Start 函数?