如何在Swift中控制从NSData(contentsOfURL:url)返回的nil值?

时间:2015-09-28 10:23:19

标签: ios nsdata swift2

我想从php服务器获取swift中的url数据。但是当我使用NSData(contentsOfURL:url!)时,我得到了nil,而且我的应用程序出现了错误:'致命错误:在解开一个Optional值时意外地发现了nil。这是因为我的服务器服务暂时不可用

我的代码是:

  let strURL: String = "http://domain.com/myphpfile.php?username="+userTF.text!+"&pass="+passTF.text!
    let url = NSURL(string: strURL)
    let dataURL = NSData(contentsOfURL: url!)  //Here return nil

如何控制我的链接何时返回nil我显示一条消息但我的应用程序未关闭?

谢谢!

1 个答案:

答案 0 :(得分:0)

避免使用!强制解包的值,而是使用if let安全解包:

if let url = NSURL(string: strURL), let data = NSData(contentsOfURL: url) {
    // use `data` here
} else {
    print("something went wrong")
}

提示:不要使用NSData contentsOfURL,而是使用类似NSURLSession的内容。这是因为contentsOfURL在冻结工作时会阻塞主线程用户界面可能会导致应用被iOS杀死。