Я разрабатываю приложение iOS, написанное в Swift, которое общается с HTTP-сервером в локальной сети, и я использую класс Apple Reachability для определения того, удаленная машина, на которой работает HTTP-сервер, находится в сети или нет. Здесь код:
...
let RemoteHost: String = "192.168.178.130"
var RemoteReachability: Reachability! = nil
var RemoteIsReachable: Bool = false
init() {
super.init()
self.RemoteReachability = Reachability(hostName: self.RemoteHost)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "reachabilityChanged:", name: kReachabilityChangedNotification, object: self.RemoteReachability)
self.RemoteReachability.startNotifier()
self.RemoteIsReachable = (self.RemoteReachability.currentReachabilityStatus().value == ReachableViaWiFi.value)
}
func reachabilityChanged(notification: NSNotification) {
let ReachabilityInst: Reachability = notification.object as Reachability
self.RemoteIsReachable = (ReachabilityInst.currentReachabilityStatus().value == ReachableViaWiFi.value)
}
Проблема заключается в том, что независимо от того, удален ли компьютер в автономном режиме,
(ReachabilityInst.currentReachabilityStatus().value == ReachableViaWiFi.value)
Всегда верно, если я подключен к сети Wi-Fi. Однако, когда я отключу Wi-Fi, это приводит к ложному, а не истинному. Я делаю что-то неправильно здесь, или класс Reachability просто не совместим с Swift/xCode 6 Beta? Я также пробовал это:
(ReachabilityInst.currentReachabilityStatus() == ReachableViaWiFi)
Но это приводит к тому, что xCode сообщает мне: "Не удалось найти перегрузку для" == ", которая принимает предоставленные аргументы", хотя оба они выглядят типа "NetworkStatus".
Спасибо заранее.