IOS成長之路-從網路讀取資料
阿新 • • 發佈:2019-02-19
邏輯:
首先建立一個NSURL地址,傳送request請求,然後呼叫
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSMutableData *)data
把下載的資料儲存到NSDate物件中,當下載完成後執行- (void)connectionDidFinishLoading:(NSURLConnection *)connection 方法,
假如連接出現錯誤:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
實現:
//定義一個NSDate物件 NSMutableData *buffer; /*=========------------------==============*/ - (void)viewDidLoad { //呼叫down方法 [self Down]; //初始化 buffer buffer = [[NSMutableData alloc]init]; [super viewDidLoad]; } -(void) Down { //建立url NSURL *url = [NSURL URLWithString:@"http://192.168.67.3:8080/movie/3.mp4"]; //基於http的連線請求 NSURLRequest* request = [[NSURLRequest alloc]initWithURL:url]; //建立 connection 會話 NSURLConnection* connection = [[NSURLConnection alloc]initWithRequest:request delegate:self]; //釋放 [connection release]; [request release]; } //提供一個NSData, 封裝了剛從連線上收到的位元組塊 //下載新增資料的時候會產生一個數據回撥(它是一部分一部分的下載),直到資料全部下載完成 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSMutableData *)data { //buffer 是一個可以修改的data 資料,把從網路上下載的資料 data 新增進去 [buffer appendData:data]; } //基於http的會話已經完成會執行(就是下載完成) - (void)connectionDidFinishLoading:(NSURLConnection *)connection { //建立一個檔案, 指定路徑,名稱,和內容 [[NSFileManager defaultManager]createFileAtPath:@"/tmp/movie.mp4" contents:buffer attributes:nil]; } //當網路連線不成功或出現異常的時候會呼叫,提供一個NSError以解釋失敗的原因 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { //載入的是一個警告框 UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle: [error localizedDescription] message: [error localizedFailureReason] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [errorAlert show]; [errorAlert release]; }