【代碼筆記】iOS-HTTPQueue下載圖片,
一,工程圖。
二,代碼。
ViewController.h
#import <UIKit/UIKit.h>#import "ASIHTTPRequest.h"#import "ASINetworkQueue.h"#import "NSNumber+Message.h"#import "NSString+URLEncoding.h"@interface ViewController : UIViewController@property (nonatomic,strong) ASINetworkQueue *networkQueue;@end
ViewController.m
//ASINetworkQueue下載圖片#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}//點擊任何處,進行圖片下載-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ if (!_networkQueue) { _networkQueue = [[ASINetworkQueue alloc] init]; } // 停止以前的隊列 [_networkQueue cancelAllOperations]; // 建立ASI隊列 [_networkQueue setDelegate:self]; [_networkQueue setRequestDidFinishSelector:@selector(requestFinished:)]; [_networkQueue setRequestDidFailSelector:@selector(requestFailed:)]; [_networkQueue setQueueDidFinishSelector:@selector(queueFinished:)]; for (int i=1; i<3; i++) { NSString *strURL = [[NSString alloc] initWithFormat:@"http://iosbook3.com/service/download.php?email=%@&FileName=test%i.jpg",@"<你的iosbook3.com使用者郵箱>",i]; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; request.tag = i; [_networkQueue addOperation:request]; } [_networkQueue go];}- (void)requestFinished:(ASIHTTPRequest *)request{ NSData *data = [request responseData]; NSError *eror; NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&eror]; if (!resDict) { UIImage *img = [UIImage imageWithData:data]; if (request.tag ==1) { // _imageView1.image = img; NSLog(@"---img--%@",img); } else { //_imageView2.image = img; NSLog(@"---img--%@",img); } } else { NSNumber *resultCodeObj = [resDict objectForKey:@"ResultCode"]; NSString *errorStr = [resultCodeObj errorMessage]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"錯誤資訊" message:errorStr delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alertView show]; } if ([_networkQueue requestsCount] == 0) { [self setNetworkQueue:nil]; } NSLog(@"請求成功");}- (void)requestFailed:(ASIHTTPRequest *)request{ NSError *error = [request error]; NSLog(@"%@",[error localizedDescription]); if ([_networkQueue requestsCount] == 0) { [self setNetworkQueue:nil]; } NSLog(@"請求失敗");}- (void)queueFinished:(ASIHTTPRequest *)request{ if ([_networkQueue requestsCount] == 0) { [self setNetworkQueue:nil]; } NSLog(@"隊列完成");}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end