我在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