我在SWIFT 2.0雨燕2.0,讓警告
這裏有問題是當前代碼塊,我寫:
let URL = NSURL(string:"www.google.com")
,然後我得到以下警告:「不可改變的值初始化網址是從來沒有使用過,考慮分配給替換「_」或刪除它。
,當我要聲明一個讓我應該怎麼辦。
我收到了類似的警告時,WR iting
我能在swift 2.0中聲明一個Let或var嗎?
我在SWIFT 2.0雨燕2.0,讓警告
這裏有問題是當前代碼塊,我寫:
let URL = NSURL(string:"www.google.com")
,然後我得到以下警告:「不可改變的值初始化網址是從來沒有使用過,考慮分配給替換「_」或刪除它。
,當我要聲明一個讓我應該怎麼辦。
我收到了類似的警告時,WR iting
我能在swift 2.0中聲明一個Let或var嗎?
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
每當你聲明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
這可以正常工作。
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)
}
}
你應該改變var
到let
以解決此警告。 爲了節省內存,編譯器推薦用戶使用let
而不是var
時,你只需要從一個變量獲得價值,但是不能設置
我覺得你沒有使用'URL'在你的代碼的任何地方反對,這就是爲什麼迅速投擲該警告。其實我沒有看到URL對象的警告,而是看到數據對象的警告! (從屏幕截圖) –
如果你沒有使用變量'data',不要聲明它。 – Sulthan
你並沒有使用'data',因爲你聲明瞭它,但是它在回調中被重新聲明爲一個參數,這就是你實際使用的。 – Wain