2015-11-23 3 views
0

У меня есть проблема в быстром 2.0Swift 2.0 и пусть предупреждение

здесь текущий блок кода, который я пишу:

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

, а затем я получаю следующее предупреждение: "инициализация неизменного значения URL никогда не используется, его следует заменить с назначением на «_» или удалить его.

Что я должен делать, когда я хочу объявить подведенный.

я получаю такое же предупреждение когда сог 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, который является еще одним var.

Так что теперь должно быть два предупреждения. 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, замените его на _. Это для оптимизации. Если вы не используете remove, который разрешите. Или, чтобы заставить замолчать предупреждение использовать простой 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

Вы должны изменить var к let, чтобы устранить это предупреждение. Чтобы сохранить память, компилятор рекомендует пользователю использовать let вместо var, когда вам нужно только получить значение от переменной, но не задано

Смежные вопросы