Я пытаюсь использовать NSURLSession
, чтобы получить идентификаторы от URL-адреса, но код между let task = NSURLSession....
и task.resume
никогда не выполняется (я поставил контрольную точку внутри, чтобы проверить, как вы можете видеть на прилагаемом изображении).Задача NSURLSession не работает
Что мне не хватает?
func getPlayingSongData() {
while loopItem < IDsForSongsToPlay.count {
self.getPlayingSongDataLoop()
loopItem++
}
self.stream()
}
func getPlayingSongDataLoop() {
playerStatus = "Paused"
let songIDToGet = IDsForSongsToPlay[loopItem]
let url:NSURL = NSURL(string: "http://url.com/ajax.php?call=song&id=\(songIDToGet)")!
print(url)
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
// Convert Json data into an Array
let songID:[String:String] = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! [String:String]
print(songID["id"]!)
self.StreamIDsForSongs.append((songID["id"]!))
songPlaying = songID["title"]!
}
task.resume()
}
UPDATE:
Я изменил
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
в
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in
, а затем он работал на меня.
Выполняется ли вызов на стороне сервера? Я сравнил ваш код с моим, и он выглядит правильно. (Я бы добавил некоторые проверки ошибок в случае, если возвращаемые данные пустые.) Я предполагаю, что код на стороне сервера плохой, возможно, ничего не возвращает. –
Кстати, это не очень хорошая идея использовать 'try!' Для обработки сетевого ответа. Вы почти наверняка не хотите, чтобы ваше приложение разбилось, если есть некоторая сетевая ошибка вне вашего контроля. – Rob
Что касается вашего обновления, это почти наверняка не настоящая проблема. Там что-то происходит. Если бы это сработало после этого изменения, это, несомненно, просто совпадение. Проблема лежит в другом месте. – Rob