現在、私は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ステートメントでこれをキャッチし、エラーメッセージがポップアップう変更されたことを思うだろうか?
クラッシュメッセージとスタックトレースとは何ですか? – Paulw11
@ Paulw11結果として、メッセージはゼロ値をアンラップしようとしているということです。関数の呼び出し順序を完全には理解していないかもしれないと仮定していますが、目的は最初に到達可能性をチェックし、アプリの残りの部分は起動します。 :) – lifewithelliott
例外ブレークポイントを設定して、クラッシュが発生する行と何もない行を判断する必要があります。 – Paulw11