- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我的下载代码:
let url = NSURL(string:"http://www.zastavki.com/pictures/originals/2013/Photoshop_Image_of_the_horse_053857_.jpg")!
let documentsDirectoryURL = NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as! NSURL
NSURLSession.sharedSession().downloadTaskWithURL(url, completionHandler: {
(location, response, error) -> Void in
if let error = error {
println(error.description)
}
else {
println("Finished downloading \"\(response.suggestedFilename)\".")
println(location.path!)
println("Started saving \"\(response.suggestedFilename)\".")
if NSFileManager().moveItemAtURL(location, toURL: documentsDirectoryURL.URLByAppendingPathComponent(response.suggestedFilename!), error: nil) {
println("File saved")
} else {
println("The File \(response.suggestedFilename!) was not saved.")
}
}
}).resume()
就目前而言,响应只能在完成处理程序中访问。
我的问题是如何在下载完成之前访问响应?
我需要 NSURLResponse 来知道:
最佳答案
不要使用共享 session
保留一个 session 属性,使用这个函数来初始化。
init(configuration configuration: NSURLSessionConfiguration?,
delegate delegate: NSURLSessionDelegate?,
delegateQueue queue: NSOperationQueue?) -> NSURLSession
然后使用dataTask下载图片
在这个委托(delegate)方法中你可以获得Response
然后将dataTask改为downlaodTask
optional func URLSession(_ session: NSURLSession,
dataTask dataTask: NSURLSessionDataTask,
didReceiveResponse response: NSURLResponse,
completionHandler completionHandler: (NSURLSessionResponseDisposition) -> Void)
示例代码:
import UIKit
class ViewController: UIViewController,NSURLSessionDelegate,NSURLSessionDataDelegate,NSURLSessionDownloadDelegate{
var session:NSURLSession?
var dataTask:NSURLSessionDataTask?
let url = NSURL(string:"http://www.zastavki.com/pictures/originals/2013/Photoshop_Image_of_the_horse_053857_.jpg")!
var infoDic = NSMutableDictionary()
override func viewDidLoad() {
super.viewDidLoad()
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
let manqueue = NSOperationQueue.mainQueue()
session = NSURLSession(configuration: configuration, delegate:self, delegateQueue: manqueue)
dataTask = session?.dataTaskWithRequest(NSURLRequest(URL: url))
dataTask?.resume()
// Do any additional setup after loading the view, typically from a nib.
}
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveResponse response: NSURLResponse, completionHandler: (NSURLSessionResponseDisposition) -> Void) {
NSLog("%@",response.description)
completionHandler(NSURLSessionResponseDisposition.BecomeDownload)
}
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didBecomeDownloadTask downloadTask: NSURLSessionDownloadTask) {
downloadTask.resume()
}
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
NSLog("%@",location);
//Get response
NSLog("%@", downloadTask.response!.description)
}
}
关于ios - 如何在 downloadTaskWithURL 完成之前获取 NSURLResponse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047706/
这个问题在这里已经有了答案: Loading/Downloading image from URL on Swift (39 个答案) 关闭 7 年前。 我正在尝试下载图片。 这是图片链接 http
当我使用从另一个 Web 服务检索的 url 获取图像数据,并且我需要更新模型对象时,我总是在更新相应的 View 时遇到问题。本质上,这是问题所在: 调用 Web 服务 A 检索图像 URL - 第
这是我的下载代码: let url = NSURL(string:"http://www.zastavki.com/pictures/originals/2013/Photoshop_Image_of
我正在观看斯坦福 CS193p 讲座视频。从 Flickr 下载一些照片时,讲师同时使用了 downloadTaskWithRequest: 和 downloadTaskWithURL:。我有点困惑。
我正在使用 downloadTaskWithURL 下载视频,并使用以下代码将其保存到我的图库中: func saveVideoBis(fileStringURL:String){ p
因此,我在使用 Swift 的过程中遇到了另一个障碍。我正在尝试将多个图像加载到图像库中 - 除了一件事之外,一切都很好。尽管我清除了图像,但应用程序的内存使用量不断增长。基本排除所有代码后,发现这是
downloadTaskWithURL 函数有时会为不存在的文件返回一个非零位置。 在测试环境中http://192.168.0.102:3000/p/1461224691.mp4没有文件 大多数时候
我是一名优秀的程序员,十分优秀!