iOS开发(OC)——iOS原生API实现文件下载
新建继承NSObject类Downloader
Downloader.h代码
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>//@class Downloader;typedef void(^Success)(NSMutableData *data,NSString *name);
typedef void(^Failure)(NSError *error);@protocol ProGress <NSObject>-(void)postPro:(CGFloat)pro;//代理实现进度传递@end@interface Downloader : NSObject <NSURLConnectionDataDelegate>
{long long _length;//文件大小NSMutableData *_datas;long long _currenLenght;//当前下载的文件大小}@property (nonatomic, assign) long long length;
@property (nonatomic, strong) NSMutableData *datas;
@property (nonatomic, copy) Success success;
@property (nonatomic, copy) Failure failure;@property (nonatomic, strong) NSString *strURL;
@property (nonatomic,strong)NSString *fileName;@property (nonatomic,assign)id<ProGress>proDelegate;- (void)asynchronousDownload:(NSString *)url failure:(Failure)failure;@end
Downloader.m代码
//
// Downloader.m
// QNNSEC
//
// Created by chenp on 16/5/25.
// Copyright © 2016年 chenp. All rights reserved.
//#import "Downloader.h"@implementation Downloader- (void)asynchronousDownload:(NSString *)strURL
{_currenLenght=0;self.strURL = strURL;NSURL *url = [NSURL URLWithString:[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];[NSURLConnection connectionWithRequest:request delegate:self];
}- (void)asynchronousDownload:(NSString *)url failure:(Failure)failure
{self.failure = failure;[self asynchronousDownload:url];
}- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{_length = response.expectedContentLength;_datas = [NSMutableData dataWithCapacity:_length];self.fileName= [response suggestedFilename];
}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{_currenLenght+=data.length;[self.datas appendData:data];if (self.proDelegate && [self.proDelegate conformsToProtocol:@protocol(ProGress)]) {[self.proDelegate postPro:(CGFloat)_currenLenght/(CGFloat)_length];}
}- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{NSLog(@"--->> Downloader 下载完成");self.success(self.datas,self.fileName);
}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{self.failure(error);
}@end
iOS开发(OC)——iOS原生API实现文件下载相关推荐
- ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果
ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...
- ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 ios开发雷达扫描的动画效果...
ios开发oc高仿京东金融白条额度余额的 ios开发水波纹 ios开发水正弦曲线波纹 直接上代码,复制粘贴就可以 vc里的 WaterRippleView *topView = [[Water ...
- 玩转iOS开发:iOS 11 新特性《UIKit新特性的基本认识》
文章分享至我的个人技术博客: https://cainluo.github.io/15099354591154.html 前两篇, 我们讲了Xcode 9的一些新特性, 可以更加方便我们去写" ...
- IOS开发系列--IOS程序开发概览
IOS开发系列--IOS程序开发概览 2014-08-04 19:42 by KenshinCui, 9983 阅读, 51 评论, 收藏, 编辑 概览 终于到了真正接触IOS应用程序的时刻了,之前我 ...
- iOS开发系列--IOS程序开发概览ios基础
iOS开发系列--IOS程序开发概览 概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的I ...
- iOS开发系列--iOS应用架构谈
转自:Casa Taloyum 目录 iOS应用架构谈 (一)开篇 iOS应用架构谈 (二)view层的组织和调用方案 iOS应用架构谈 (三)网络层设计方案 iOS应用架构谈 (四)动态部署方案 i ...
- iOS开发笔记--iOS应用架构谈 view层的组织和调用方案
前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...
- [IOS开发教程] ios开发培训:浅析最方便的iOS开发环境
RIA视频教程">摘要:移动 开发也称作手机开发,现阶段比较主流的移动开发平台主要是IOS, 安卓, WP8 等,那么我们今天的ios开发学习就针对ios开发环境来简单阐述一些观点. ...
- 从今天开始学习iOS开发(iOS 7版)-- 概论 (一)
<Start Developing iOS Apps Today>为iOS开发提供了完美的起点.你可以在Mac上创建运行在iPad,iPhone和iPod touch上的iOS app.查 ...
- iOS开发 - 中文 iOS/Mac 开发博客列表
博客地址 RSS地址 OneV's Den http://onevcat.com/atom.xml 破船之家 http://beyondvincent.com/atom.xml NSHipster h ...
最新文章
- R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格、可视化核心参数与评估指标关系、Accuracy与树的深度、个数的关系、Kappa与树的深度、个数的关系
- Android应用程序键盘(Keyboard)消息处理机制分析(20)
- 如何保护自己的android app
- 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )
- Python学习---django知识补充之CBV
- 【计算机网络复习 数据链路层】3.4.4 选择重传协议(SR)
- Spring MVC中@Controller和@RequestMapping注解详解
- SAP License:SAP不便解决的问题之六——采购组在审批策略中的作用
- 数学文化 剩余定理
- oracle附加数据库拒绝访问,Windows 添加任务计划报“0x80070005: 拒绝访问”的解决...
- FreeBSD磁盘标签实例分析
- 根据UE4官方文档实现一个FPS游戏
- Java运行环境下载
- 计算机学硕编码,怎么区分学硕和专硕代码
- lncRNA数据分析专题
- python爬虫爬取steam,epic,origin平台游戏数据
- 使用XPath的爬虫
- python数据分析与可视化【一】python基础实例
- 计算机教室管理使用标准,计算机教室管理标准制度.doc
- 网络编程 网络地址点分十进制和二进制之间的转换