progress.fractionCompleted
来源:互联网 发布:freebsd mysql 编辑:程序博客网 时间:2024/06/05 11:03
// MARK: 下载文件
/**
下载文件
- parameter urlStr: 文件的网络地址
- parameter savePath: 保存路径(包含文件名)
- parameter progress: 进度
- parameter resultBlock: 结果回调
*/
func download(urlStr:String, savePath: String, progress: ((_ progress:Double) -> ())?, resultBlock: ((URL?,Error?)->())?) {
let urlRequest =URLRequest(url: URL(string: urlStr)!)
let task =self.downloadTask(with: urlRequest, progress: {
if progress !=nil {
progress!(($0.fractionCompleted))
}
}, destination: { (url, response) -> URLin
returnURL(fileURLWithPath: savePath)
}, completionHandler: { (response, url, error) in
if resultBlock !=nil {
resultBlock!(url, error)
}
})
task.resume()
}
////////////////////////////////////////////////////////////////
追踪下载进度
在下载开始之后,请求会开始更新progress,这是一个NSProgress类型的属性。app通过对progress.fractionCompleted进行KVO来追踪下载进度。这需要开始和结束观察,以及添加当值改变时执行的代码。列表4-6展示了如何开始和结束观察进度。列表4-7展示了当值改变时执行的代码。
列表4-6 开始和结束追踪下载进度
// Start observing fractionCompleted for the progress
[self.resourceRequest.progress addObserver:self forKeyPath:@
"fractionCompleted"
options:NSKeyValueObservingOptionNew context:NULL];
// Stop observing fractionCompleted for the progress
[self.resourceRequest.progress removeObserver:self forKeyPath:@
"fractionCompleted"
];
列表4-7 当fractionCompleted的值改变时执行的代码
//
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
// Check for the progress object and key
if
((object == self.resourceRequest.progress) && ([keyPath isEqualToString:@"fractionCompleted])) {
double progressSoFar = self.resourceRequest.progress.fractionCompleted;
// do something with the value
}
}
追踪下载的两个重要用途是:
调整下载优先级。如果下载时间过长可以提高优先级,如果时间充裕可以降低优先级。
为用户提供下载进度反馈。可以使用一个简单的进度条来反馈fractionCompleted的值。
- progress.fractionCompleted
- Progress
- Progress Control
- other progress
- progress bar
- PROGRESS SQL
- Progress用法
- html5 progress
- html5 progress
- 自定义progress
- Work Progress
- 进度条progress
- 自定义Progress
- Progress事件
- Progress进度条
- 自定义Progress
- progress.hpp
- Linux_Program Progress
- php获取二维数组value的最小值key为指定非整型值
- 关于linux下alsa的一些知识
- feedly导入OPML文件(批量订阅博客)
- LICEcap方便快捷制作gif图片的工具
- SHELL的简介
- progress.fractionCompleted
- protobuf二:第一个c++示例
- Orcale(一)之:表2
- js判断对象属性,并追加
- js笔记(三)--正则表达式
- robot framework封装自定义关键字方法
- Linux Shell编程笔记
- 初探es6(react铺垫)
- 将相对路径转为绝对路径的方法