2016-07-24 4 views
1

Swift 3 на Xcode 8β3.URLSession, забрасывающий исключение NSURLSession

Любые идеи, почему код ниже бросает ошибку (далее) ниже, особенно учитывая то, что я использую URLSession не NSURLSession?

КОД

public func updateCurrentConditions() { 

    let session = URLSession() 
    let url  = URL(string: "http://api.wunderground.com/api/\(key)/conditions/51.32,-1.0.json")! 
    let loadDataTask = session.dataTask(with: url, completionHandler: self.dataHandler) 
    loadDataTask.resume() 
} 

private func dataHandler(data: Data?, response: URLResponse?, error: NSError?) -> Void { 
    print("dataHandler executed.") 
} 

ОШИБКА

неудачно: поймали "NSInvalidArgumentException", "- [NSURLSession dataTaskForRequest: завершение]: непризнанные селектор направлен например 0x7fac89569f00"

ответ

2

Есть вы пытались использовать sharedURLSession?

let session = URLSession.shared 

по умолчанию инициализатор URLSession не определен, так что он может создавать что-то странное ...

+0

Ах, я попробовал несколько подобных вариантов, но, как, например, а не статические функции. Это работает. Ну, он компилируется и работает в любом случае. Тем не менее, вы не вызываете дескриптор завершения. :( –

+0

@ VinceO'Sullivan, я считаю, что ваш код (с 'shared' fixed) должен работать. (Протестирован в примерном проекте с использованием другого URL-адреса.) Проверьте свой URL-адрес, ключ, настройки ATS ... Надеюсь, вы сможете решить эти проблемы – OOPer

+0

Интересно. Хорошо работает при встраивании в приложение (одно представление), но, похоже, не вызывает обработчик завершения при вложении в рамки Cocoa Touch. –

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