2015-11-23 52 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時,你只需要從一個變量獲得價值,但是不能設置