Swift 将下载的文件放入文件夹
Swift put dowloaded file into folder
我想下载一个文件并将其放入已知路径。我搜索了,但我不明白我该怎么做。
这是下载代码:
func downloadFile(timeout: NSTimeInterval, completionHandler:(megabytesPerSecond: Double?, error: NSError?) -> ()) {
let url = NSURL(string: "http://insert.your.site.here/yourfile")!
startTime = CFAbsoluteTimeGetCurrent()
stopTime = startTime
bytesReceived = 0
speedTestCompletionHandler = completionHandler
let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration()
configuration.timeoutIntervalForResource = timeout
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
session.dataTaskWithURL(url).resume()
}
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
bytesReceived! += data.length
stopTime = CFAbsoluteTimeGetCurrent()
}
如何将接收到的数据放入文件夹中?
注意:我使用NSURLSESSION
和NSURLSessionDataTask
我过去实现这个的方法是维护一个 dataTasks 及其相关数据对象的字典(如果你 运行 一次有多个任务)作为 class 执行任务。
我不确定你使用的是什么语法,我认为它在 Swift 2 和 3 之间发生了变化。
在 Swift 2 中,使用 NSURLSession(session:dataTask:didReceiveData) 然后您可以执行以下操作:
if let existingData = taskDictionary[dataTask] {
let newData : NSMutableData = existingData.mutableCopy()
newData.append(data)
taskDictionary[dataTask] = newData as NSData
}
在Swift3中,Data本身是可变的(没有对应的可变subclass),所以我相信你可以直接调用append。
无论哪种方式,这都会逐渐构建您的数据对象。任务完成后,您然后使用相关的委托函数尝试使用 data.writeToFile 或 data.write 通过 try...catch 子句保存数据(再次取决于您的 swift 版本).
希望对您有所帮助。
我想下载一个文件并将其放入已知路径。我搜索了,但我不明白我该怎么做。
这是下载代码:
func downloadFile(timeout: NSTimeInterval, completionHandler:(megabytesPerSecond: Double?, error: NSError?) -> ()) {
let url = NSURL(string: "http://insert.your.site.here/yourfile")!
startTime = CFAbsoluteTimeGetCurrent()
stopTime = startTime
bytesReceived = 0
speedTestCompletionHandler = completionHandler
let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration()
configuration.timeoutIntervalForResource = timeout
let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
session.dataTaskWithURL(url).resume()
}
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
bytesReceived! += data.length
stopTime = CFAbsoluteTimeGetCurrent()
}
如何将接收到的数据放入文件夹中?
注意:我使用NSURLSESSION
和NSURLSessionDataTask
我过去实现这个的方法是维护一个 dataTasks 及其相关数据对象的字典(如果你 运行 一次有多个任务)作为 class 执行任务。
我不确定你使用的是什么语法,我认为它在 Swift 2 和 3 之间发生了变化。
在 Swift 2 中,使用 NSURLSession(session:dataTask:didReceiveData) 然后您可以执行以下操作:
if let existingData = taskDictionary[dataTask] {
let newData : NSMutableData = existingData.mutableCopy()
newData.append(data)
taskDictionary[dataTask] = newData as NSData
}
在Swift3中,Data本身是可变的(没有对应的可变subclass),所以我相信你可以直接调用append。
无论哪种方式,这都会逐渐构建您的数据对象。任务完成后,您然后使用相关的委托函数尝试使用 data.writeToFile 或 data.write 通过 try...catch 子句保存数据(再次取决于您的 swift 版本).
希望对您有所帮助。