- 用於網路溝通
- 官方網站
- 解壓後放入欲使用的專案中
使用範例
﹣欲下載網路圖片如下
圖片來源 |
.h
#import <UIKit/UIKit.h> #import "ASIHTTPRequest.h" #import "ASINetworkQueue.h" @interface ViewController : UIViewController <ASIHTTPRequestDelegate> { NSMutableData* mDataBuf; ASINetworkQueue* mQue; NSArray* mUrls } @end |
.m
- (void)viewDidLoad { [super viewDidLoad]; // 下載的緩衝區 mDataBuf = [[NSMutableData alloc] init]; // 執行Request區域,類似NSOperationQueue, // 故在執行Request時是以執行緒方式進行,不影響原執行緒 mQue = [[ASINetworkQueue alloc] init]; [mQue reset]; [mQue setShowAccurateProgress:YES]; [mQue go]; // 設定下載位址 NSURL* url = [NSURL URLWithString:@"http://c.blog.xuite.net/c/b/6/5/20656505/blog_1172634/txt/23851923/10.jpg"]; ASIHTTPRequest* request = [[ASIHTTPRequest alloc] initWithURL:url]; // 設置ASIHTTPRequest delegate,用於回傳訊息並處理 request.delegate = self; // 開始處理Request [que addOperation:request]; } // ASIHTTPRequestDelegate 接收到資料後 - (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data { [mDataBuf appendData:data]; NSLog(@"Recevie %d bytes...", [data length]); } // ASIHTTPRequestDelegate 資料接收完成 - (void)requestFinished:(ASIHTTPRequest *)request { // 取得存放位置 NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *path = [pathList objectAtIndex:0]; // 指定 資料夾 path = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"/tmp/test"]]; // 若指定資料夾不存在則創建 NSFileManager* fileM = [NSFileManager defaultManager]; NSError* error; if(![fileM fileExistsAtPath:path]) [fileM createDirectoryAtPath:path withIntermediateDirectories:true attributes:nil error:&error]; //加上檔名 path = [path stringByAppendingPathComponent: [NSString stringWithFormat: @"/00.jpg"]]; NSLog(@"儲存路徑:%@", path); //寫入檔案 [mDataBuf writeToFile:path atomically:NO]; mDataBuf = [[NSMutableData alloc] init]; NSLog(@"Download success"); } |
Note
- ASIHTTPRequestDelegate還有許多回傳方法,依需要來實作
- 加入專案時可能會發生一堆類似的參考錯誤 "Apple Mach-O Linker (id) Error"
上述錯誤需加入sqlite3的library |
進入TARGETS |
沒有留言:
張貼留言