Swift 4 中的可达性问题
Posted
技术标签:
【中文标题】Swift 4 中的可达性问题【英文标题】:Reachability problems in Swift 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()
,但它仍然不起作用。
你是说你想在应用程序启动并且它有连接时转到初始视图控制器,如果它没有连接它会转到另一个控制器,还是你想持续监控状态并在设备失去连接时更改?
【参考方案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.")
【讨论】:
以上是关于Swift 4 中的可达性问题的主要内容,如果未能解决你的问题,请参考以下文章