Быстрая сессия NSURLS | Xcode 6.1

Value of optional type 'NSURL?' not unwrapped; did you mean to use '!' or '?'?

Когда я ввожу "!" или "?", мое приложение не собирается. Этот код работал в Mavericks, но после обновления до Yosemite я получаю сообщение об ошибке. Я считаю, что это синтаксическая ошибка, но я не могу найти решение.

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    var url = NSURL(string: "http://www.stackoverflow.com")

    let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) in

        println(NSString(data: data, encoding:NSUTF8StringEncoding))

    }

person Matt    schedule 04.11.2014    source источник


Ответы (1)


Проблема не в Yosemite, а в обновлении до Xcode 6.1.

Инициализатор NSURL относится к типу failable, что означает, что он может возвращать nil, если URL-адрес, переданный в виде строки, имеет неверный формат. По этой причине вы должны проверить наличие не nil и развернуть, что вы можете сделать с помощью дополнительной привязки:

var url = NSURL(string: "http://www.stackoverflow.com")
if let url = url { // << Optional binding
    let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) in
        println(NSString(data: data, encoding:NSUTF8StringEncoding))
    }
}
person Antonio    schedule 04.11.2014