首页 文章

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

提问于
浏览
0

我想从php服务器获取swift中的数据 . 但是,当我使用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

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

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

    Hint: don't use NSData contentsOfURL anyway, use something like NSURLSession instead. 这是因为 contentsOfURL 阻止主线程在工作时冻结UI并可能导致应用程序被iOS杀死 .

相关问题