Пользовательское преобразование определенных объектов в JSON.NET

Из моего тестирования вам нужно выбрать, хотите ли вы использовать делегат или обработчик завершения - если вы укажете оба, вызывается только обработчик завершения. Этот код дал мне текущие обновления и событие didFinishDownloadingToURL:

func downloadEpisodeWithFeedItem(episodeURL: NSURL) {
    let request: NSURLRequest = NSURLRequest(URL: episodeURL)
    let config = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession(configuration: config, delegate: self, delegateQueue: NSOperationQueue.mainQueue())

    let downloadTask = session.downloadTaskWithURL(episodeURL)
    downloadTask.resume()
}

func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64) {
    println("didResumeAtOffset: \(fileOffset)")
}

func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
    var downloadProgress = Double(totalBytesWritten) / Double(totalBytesExpectedToWrite)
    println("downloadProgress: \(downloadProgress)")
}

func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
    println("didFinishDownloadingToURL: \(location)")
    println(downloadTask)
}

Из NSURLSession документации , вот соответствующий раздел:

Как и большинство сетевых API, API NSURLSession отличается высокой асинхронностью. Он возвращает данные одним из двух способов, в зависимости от методов, которые вы вызываете:

  • К блоку обработчика завершения, который возвращает данные в ваше приложение, когда передача завершается успешно или с ошибкой.
  • Вызов методов вашего пользовательского делегата при получении данных.
  • Вызов методов в пользовательском делететете, когда загрузка в файл завершена.
blockquote >

Поэтому по дизайну он возвращает данные либо блоку обработчика завершения, либо делегату. Но, как показано здесь, не оба.

31
задан Mikey S. 15 November 2015 в 13:24
поделиться