我在关闭时检查nil时出错

时间:2015-07-24 18:37:40

标签: ios swift closures

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

         var url = NSURL(string: "http://www.weather-forecast.com/locations/London/forecasts/latest")

        if url != nil {
            let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
                var urlContenent = NSString(data: data, encoding: NSUTF8StringEncoding)
            })

        }
        else{

        }


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

这是我得到的错误

  

无法调用'!='使用类型'的参数列表(@ lvalue NSURL,   NilLiteralConvertible)'

2 个答案:

答案 0 :(得分:0)

从技术上讲,这不是您问题的答案,但您可以使用if let声明

if let url = url{
  let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, response, error) -> Void in
  var urlContenent = NSString(data: data, encoding: NSUTF8StringEncoding)
}

这也将检查你的网址是否为零,如果不是,它将继续if语句。如果你使用它,你也不再需要强行打开url

答案 1 :(得分:0)

您使用的是Xcode 6.0.1,它早于introduced in Xcode 6.1可用的初始值设定项。因此,您的网址不是可选的,会产生您描述的错误(将非可选值与nil进行比较)。

自6.0.1以来,Swift发生了重大变化。我可能会建议升级到Xcode的当前生产版本。