2016-04-08 20 views
0

現在、私はAshley MillのReachability Classを使用しています。アプリケーションがネットワーク接続で起動する場合、問題なく接続の可用性を切り替えることができ、ネットワーク接続のアラートコントローラを適切に表示することができます。しかし、アプリがインターネット接続なしで飛行機モードで起動したときにアプリケーションが起動されると、突然クラッシュします。飛行機モードでの起動時にアプリケーションがクラッシュする

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    setUpReachability (nil) 
} 

func setUpReachability(hostName: String?) 
{ 
    do 
    { 
     let reachability = try hostName == nil ? Reachability.reachabilityForInternetConnection() : Reachability(hostname: hostName!) 
     self.reachability = reachability 
     try! self.reachability?.startNotifier() 
    } 
    catch ReachabilityError.FailedToCreateWithAddress(let address) 
    { 
     print("\(address)") 
     return 
    } catch {} 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.reachabilityChanged(_:)), name: ReachabilityChangedNotification, object: reachability) 
} 

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

    if reachability.isReachable() 
    { 
     if reachability.isReachableViaWiFi() 
     { 
      connected = true 
     } 
     else 
     { 
      connected = true 
     } 
    } 
    else 
    { 
     let alert = UIAlertController(title: "No Network Connection Available", message:"Try Again", preferredStyle: .Alert) 
     alert.addAction(UIAlertAction(title: "Will Do!" , style: .Default) { _ in }) 
     presentViewController  (alert, animated: true    ) {} 
     connected = false 
    } 
} 
iPhoneアプリが起動し、ネットワーク接続ではなく、突然クラッシュがないという警告を表示できるようにするために何ができるか

エラーメッセージ:

fatal error: unexpectedly found nil while unwrapping an Optional value

しかし、私は到達可能性は、elseステートメントでこれをキャッチし、エラーメッセージがポップアップう変更されたことを思うだろうか?

enter image description here

+3

クラッシュメッセージとスタックトレースとは何ですか? – Paulw11

+0

@ Paulw11結果として、メッセージはゼロ値をアンラップしようとしているということです。関数の呼び出し順序を完全には理解していないかもしれないと仮定していますが、目的は最初に到達可能性をチェックし、アプリの残りの部分は起動します。 :) – lifewithelliott

+1

例外ブレークポイントを設定して、クラッシュが発生する行と何もない行を判断する必要があります。 – Paulw11

答えて

0

reachability.isReachableViaWiFi(中他ならない)ステートメントがあることとします。接続= falseの?

+0

あなたが参照しているelseステートメントは、セルラーネットワークへの到達可能性です。したがって、ネットワーク接続が到達可能な場合、どのようにWi-Fi経由でそのセルラーに到達可能か、または到達不能であればユーザに警告を表示します。D – lifewithelliott

0

エラーは、アプリの起動時にデータをダウンロードしようとしていたのですが、アプリの初期化を完了してからサーバーにリクエストにアクセスして情報にアクセスすることができませんでした。

関連する問題