Ios 应用程序在飞机模式下启动时崩溃

Ios 应用程序在飞机模式下启动时崩溃,ios,swift,reachability,reachability-swift,Ios,Swift,Reachability,Reachability Swift,我目前正在使用Ashley Mill的可达性类。如果应用程序以网络连接方式启动,则我能够在连接可用性之间切换,而不会出现任何问题,并且能够正确显示网络连接警报控制器。但是,如果应用程序在没有互联网连接/飞机模式的情况下启动,则会突然崩溃 override func viewDidLoad() { super.viewDidLoad() setUpReachability (nil) } func setUpReachability(hostName: String?) {

我目前正在使用Ashley Mill的可达性类。如果应用程序以网络连接方式启动,则我能够在连接可用性之间切换,而不会出现任何问题,并且能够正确显示网络连接警报控制器。但是,如果应用程序在没有互联网连接/飞机模式的情况下启动,则会突然崩溃

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应用程序启动并显示一个警报,表明没有网络连接,而不是突然崩溃

错误消息:

致命错误:在展开可选值时意外发现nil

但我认为可达性更改会在else语句中捕捉到这一点,并弹出错误消息


可访问性中的else不应该。isReachableViaWiFi()如果语句be:connected=false?

可访问性中的else不应该。isReachableViaWiFi()不应该if语句be:connected=false?

错误在于,我实际上是在应用程序启动时尝试下载数据,而不是先让应用程序的初始化完成,然后向服务器发送访问信息的请求

错误在于,我实际上是在应用程序启动时尝试下载数据,而不是先让应用程序初始化完成,然后向服务器发送访问信息的请求

什么是崩溃消息和堆栈跟踪?@Paulw11产生的消息是,它试图打开一个nil值-我假设我只是不完全了解调用函数的顺序,但目标是首先检查可访问性,然后完成应用程序启动的其余部分。:)您应该设置一个异常断点,以确定崩溃发生在哪一行,什么是零。@Paulw11我所经历的是:第51行是我的视图的右括号显示:如果我在那里设置了断点,那么应用程序不会崩溃。如果我在第52行的空白处设置断点,那么应用程序就会崩溃,出现错误。viewDidLoad中的第一行是setUpReachability方法-它没有阻止应用程序继续并显示警报的原因是什么?但是您是否在一行中设置了异常断点而不是断点?转到断点导航器,添加断点并选择“异常”什么是崩溃消息和堆栈跟踪?@Paulw11产生的消息是,它试图打开一个nil值-我假设我只是不完全了解调用函数的顺序,但目标是首先检查可访问性,然后完成应用程序启动的其余部分。:)您应该设置一个异常断点,以确定崩溃发生在哪一行,什么是零。@Paulw11我所经历的是:第51行是我的视图的右括号显示:如果我在那里设置了断点,那么应用程序不会崩溃。如果我在第52行的空白处设置断点,那么应用程序就会崩溃,出现错误。viewDidLoad中的第一行是setUpReachability方法-它没有阻止应用程序继续并显示警报的原因是什么?但是您是否在一行中设置了异常断点而不是断点?转到断点导航器,添加一个断点并选择“exception”您所指的else语句是蜂窝网络的可达性。因此,如果网络连接是可访问的-如何通过wifi或其蜂窝网络访问,或者如果其不可访问,则向用户显示警报:d您所指的else语句是蜂窝网络的可访问性。因此,如果网络连接是可访问的-如何通过wifi或其手机连接,或者如果无法连接,则向用户显示警报:D