当Swift中有WiFi时,无法恢复线程

时间:2016-08-25 15:49:46

标签: ios swift grand-central-dispatch

我有以下代码块来检查Swift中是否有WiFi:

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关闭时正确显示警报给用户。但是,我遇到的问题是,当我在应用程序运行时打开WiFi,然后尝试继续运行代码块时,它似乎挂起(即我看到活动指示器永久运行),从这一点来看,代码似乎没有进展。谁能明白为什么?

1 个答案:

答案 0 :(得分:0)

如何调用此函数?你是否有某种计时器每隔x秒运行一次,例如然后调用此函数或代码中某个调用此函数的回调?

如果没有看到您目前设置的更多内容,它会让我看到(完全脱离我可用的代码)您只有两个方案:

  1. 启动功能,并且没有互联网连接 - 显示提醒
  2. 启动功能并且有网络连接,但数据尚未就绪 - 显示微调器
  3. 当您的数据准备就绪时,开始功能是否会再次被调用?#34; ?