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