2016-12-19 57 views
0

我想檢測網絡更改。例如,當從wifi切換到4G或返回時。但是我的代碼沒有檢測到這些變化。當應用程序啓動時,我只獲得一些輸出。通知中心未觸發網絡更改

我有這樣的代碼:

import ReachabilitySwift 

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let reachability = Reachability()! 


     NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged),name: ReachabilityChangedNotification,object: reachability) 
     do{ 
      try reachability.startNotifier() 
     }catch{ 
      print("could not start reachability notifier") 
     } 

    } 

func reachabilityChanged(note: NSNotification) { 

     let reachability = note.object as! Reachability 

     if reachability.isReachable { 
      if reachability.isReachableViaWiFi { 
       print("Reachable via WiFi") 
      } else { 
       print("Reachable via Cellular") 
      } 
     } else { 
      print("Network not reachable") 
     } 
    } 

難道我已經實現了什麼問題?

回答

2

的操作方法需要一個參數,因此選擇必須

#selector(reachabilityChanged(_:)) // self is not needed 

而且本身應該是

func reachabilityChanged(_ notification: Notification) { 
+0

我已經改變了代碼到你。但它不起作用。 – da1lbi3

+0

嘗試使用基於塊的API。 – vadian

+0

你是什麼意思?我已經在此頁面上使用了示例 - 通知:https://github.com/ashleymills/Reachability.swift – da1lbi3

0

選擇的方法是錯誤的

改變這種

NotificationCenter.default.addObserver(self, selector: #selector(self.reachabilityChanged),name: ReachabilityChangedNotification,object: reachability) 

NotificationCenter.default.addObserver(self, selector: #selector(reachabilityChanged(_:),name: ReachabilityChangedNotification,object: reachability) 

我希望這會起作用。

func reachabilityChanged(note: NSNotification) { 

func reachabilityChanged(note: NSNotification) { 
+0

它不起作用。更改網絡時不會調用該函數。 – da1lbi3

+0

已修改,請檢查。 –