gpt4 book ai didi

ios - 通知用户可达性(Ashley Mills' Reachability)

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:11 26 4
gpt4 key购买 nike

我制作了一个应用,我想添加在应用的互联网可达性发生变化时通知用户的功能。

我使用 Ashley Mills 的 Reachability.swift 文件。

现在我了解它是如何工作的,所以我放置了代码,当互联网可达性发生变化时,它会在 appDelegate 中打印它的状态。

但是,当我尝试设置提醒用户没有互联网连接的功能时,出现错误。

这是我在应用委托(delegate)中的代码。

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

var reachability : Reachability?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
do {
let reachability = try Reachability.reachabilityForInternetConnection()
self.reachability = reachability
} catch ReachabilityError.FailedToCreateWithAddress(let address) {

}
catch {}

NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityChanged:", name: ReachabilityChangedNotification, object: reachability)
do {
try reachability?.startNotifier()
} catch {}

return true
}

func reachabilityChanged(notification: NSNotification) {
let reachability = notification.object as! Reachability

if reachability.isReachable() {

print("reached")
} else {


print("not reached")
}
}

这很好用。然而Viewcontroller中的代码,

class ViewController: UIViewController {
var reachability : Reachability?
@IBOutlet weak var label: UILabel!
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()

NSNotificationCenter.defaultCenter().addObserver(self, selector: "HeyUserInternetDoesntWork", name: ReachabilityChangedNotification, object: nil)
//get call from appDelegate Notification.
}


func HeyUserInternetDoesntWork() {


if reachability!.isReachable() {

print("notify User working")
} else {


print("Notify user not working")
}
}

unexpectedly found nil while unwrapping an Optional value

它得到这个错误。

我将添加代码以在它工作后提醒用户。

在这里提问,

我怎样才能让它发挥作用?它不必使用该方法,但我想继续使用 NSNotification。其实我是一个编码新人,所以请解释细节。

最佳答案

你在哪里初始化可达性属性?这个变量总是零。在 func HeyUserInternetDoesntWork 中,您尝试使用可达性,当然它会出错。您需要像这样初始化属性:

private let reachability = Reachability.reachabilityForInternetConnection()

在使用带有“动态”关键字的 func HeyUserInternetDoesntWork 之后:

dynamic func HeyUserInternetDoesntWork() {

if reachability!.isReachable() {

print("notify User working")
} else {


print("Notify user not working")
}
}

因为 NSNotificationCenter 观察者选择器应该是动态的。

关于ios - 通知用户可达性(Ashley Mills' Reachability),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com