【问题标题】:Reachability problems in Swift 4Swift 4 中的可达性问题
【发布时间】:2018-01-09 07:42:32
【问题描述】:

我一直在尝试检查互联网连接。如果设备连接到互联网,那么它会转到 MainStoryboard 上的初始 viewController,否则它会在同一个故事板上显示另一个 viewController。但是这段代码对我不起作用。我没有收到任何错误,它只是不起作用。

这里是截图: Screenshot

这是我在 AppDelegate.swift 中写的:

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var reachability: Reachability?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    UIApplication.shared.statusBarStyle = .lightContent
    NotificationCenter.default.addObserver(self, selector: #selector(ReachabilityCheck(_:)), name: NSNotification.Name.reachabilityChanged, object: nil)
    return true
}

而功能是:

    @objc func ReachabilityCheck(_: Notification) {
    var remoteHostStatus = self.reachability!.currentReachabilityStatus()

    if remoteHostStatus == NotReachable
    {
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let offlineViewController = mainStoryboard.instantiateViewController(withIdentifier: "notReachable") as! notReachableViewController
        window!.rootViewController = offlineViewController
        window!.makeKeyAndVisible()
    }else
    {
        let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let initialViewController = mainStoryboard.instantiateViewController(withIdentifier: "mainNav") as! UINavigationController
        window!.rootViewController = initialViewController
        window!.makeKeyAndVisible()
    }
}

我应该怎么做才能让它工作?请帮忙!

【问题讨论】:

  • 你在哪里设置reachability属性?请遵守命名约定。类/结构以大写字母开头,变量和函数/方法以小写字母开头。
  • 我已经从苹果下载了这个属性:link
  • 不,var reachability: Reachability? 已声明但未初始化。该物业是nil。要监控可达性,您必须初始化 Reachability 实例并将其分配给属性。目前代码什么也不做。
  • 我在 AppDelegate.swift 中的 didFinishLaunchingWithOptions launchOptions 中初始化了 self.reachability = Reachability.forInternetConnection() self.reachability?.startNotifier(),但它仍然不起作用。
  • 你是说你想在应用程序启动并且它有连接时转到初始视图控制器,如果它没有连接它会转到另一个控制器,还是你想持续监控状态并在设备失去连接时更改?

标签: ios swift swift4 reachability


【解决方案1】:

斯威夫特 4

创建一个新的 Swift 类

import Foundation

import Alamofire

class Connectivity {

class func isConnectedToInternet() ->Bool {

return NetworkReachabilityManager()!.isReachable

}

}

//用法.....

    if Connectivity.isConnectedToInternet() == true {
            print("Yes! internet is available.")
            // do some tasks..
        }
        else
        {
           // self.view.makeToast("Yes! internet is available.")
            print("Yes! internet is available.")
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多