2015-11-23 48 views
0

我在SWIFT 2.0雨燕2.0,让警告

这里有问题是当前代码块,我写:

let URL = NSURL(string:"www.google.com") 

,然后我得到以下警告:“不可改变的值初始化网址是从来没有使用过,考虑分配给替换“_”或删除它。

,当我要声明一个让我应该怎么办。

我收到了类似的警告时,WR iting var URL = NSURL(string: "www.google.com")

我能在swift 2.0中声明一个Let或var吗?

+1

我觉得你没有使用'URL'在你的代码的任何地方反对,这就是为什么迅速投掷该警告。其实我没有看到URL对象的警告,而是看到数据对象的警告! (从屏幕截图) –

+0

如果你没有使用变量'data',不要声明它。 – Sulthan

+0

你并没有使用'data',因为你声明了它,但是它在回调中被重新声明为一个参数,这就是你实际使用的。 – Wain

回答

4

initialization of immutable value URL was never used

意味着你没有使用可变的任何地方,所以它抛出一个警告。但看看屏幕截图,您已将URL声明为var,并将其用于data这是另一个变体。

所以现在应该有两个警告。 URL被声明为var,但从未发生过变异,并且从未使用过变量data

为了满足,使用let URL ...,因为你没有改变它。并取消data,因为这是一个异步块/闭包,您可以从完成块访问data

注:

你应该使用let当你不以后修改它,你应该使用var当你要修改的对象。考虑阵列:

let immutableArray:[String] = ["foo", "bar"] 
var mutableArray:[String] = ["hello"] 

mutableArray.append("World") // Is valid since its a var 
immutableArray.append("abc") // Not valid, infact auto complete does not even show append methods 
0

每当你声明let,而不是使用恒定的编译器将显示警告。没有什么可担心的。如果您不使用let常量,请用_替换它。这是为了优化。如果你不使用删除,让。或沉默警告使用一个简单的print(YOUR Constant) 对于您的情况下用户

let url = URL = NSURL(string:"www.google.com") 

let data = NSURLSession.sharedSession().downloadTaskWithURL(URL!) { 
{ (data, response, error) in { 
    if(error != nil) { 
    print(data) // This data is different from let data constant 
} 
print(data) // This will silence warning. Also make sure it is not nil 
0

这可以正常工作。

let URL = NSURL(string:"www.google.com") 
NSURLSession.sharedSession().downloadTaskWithURL(URL!) { (url: NSURL?, response: NSURLResponse?, error: NSError?) -> Void in 
    if error == nil && url != nil { 
     let data = NSData(contentsOfURL: url!) 
      print(data) 
     } 
    } 
0

你应该改变varlet以解决此警告。 为了节省内存,编译器推荐用户使用let而不是var时,你只需要从一个变量获得价值,但是不能设置