UI2

it2024-11-07  5

// AppDelegate.m // UI2_异步下载 // // Created by zhangxueming on 15/7/17. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. ViewController *root = [[ViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root]; self.window.rootViewController = nav; self.window.backgroundColor = [UIColor whiteColor]; return YES; }

 

// ViewController.h // UI2_异步下载 // // Created by zhangxueming on 15/7/17. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UITableViewController <NSURLConnectionDataDelegate> @end // // ViewController.m // UI2_异步下载 // // Created by zhangxueming on 15/7/17. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import "ViewController.h" #import "UIImageView+WebCache.h" //异步下载:向服务器发送请求后,UI主线程能继续交互,另外单独创建一个线程下载数据 @interface ViewController () { NSURLConnection *_urlConntecion;//建立客户端与服务器的连接 NSMutableArray *_dataList; //数据源 NSMutableData *_receiveData; //存储服务器下发的数据 } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _dataList = [NSMutableArray array]; _receiveData = [NSMutableData data]; [self loadDataWithPage:10]; } - (void)loadDataWithPage:(NSInteger)page { //1.创建NSURL NSString *urlString = [NSString stringWithFormat:@"http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=%ld", page]; NSURL *url = [NSURL URLWithString:urlString]; //2.创建网络请求对象 NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; //3.通过NSURLConnection对象实现异步下载数据 _urlConntecion = [[NSURLConnection alloc] initWithRequest:request delegate:self]; } #pragma mark ---NSURLConnectionDataDelegate--- //当客户端接受到服务器的响应,调用此方法 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { //打印状态码 NSLog(@"statusCode = %li", ((NSHTTPURLResponse *)response).statusCode); //清空数据 [_receiveData setLength:0]; } //当从服务器接受到数据的时候, 调用此方法,如果数据量比较大, 该方法被调用多次 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [_receiveData appendData:data]; } //当数据完成下载, 调用该方法 - (void)connectionDidFinishLoading:(NSURLConnection *)connection { //数据解析 id result = [NSJSONSerialization JSONObjectWithData:_receiveData options:NSJSONReadingMutableContainers error:nil]; if ([result isKindOfClass:[NSDictionary class]]) { NSLog(@"result = %@", result); NSArray *app = [result objectForKey:@"applications"]; [_dataList addObjectsFromArray:app]; } else if([result isKindOfClass:[NSArray class]]) { } //刷新UI [self.tableView reloadData]; } //下载数据失败的时候调用该方法 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { //打印错误信息 NSLog(@"%@", error.localizedDescription); } #pragma mark ---UITableViewDataSource--- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return _dataList.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *reuseId = @"cellId"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseId]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseId]; } //name //currentPrice //iconUrl NSDictionary *dict = _dataList[indexPath.row]; cell.textLabel.text = [dict objectForKey:@"name"]; cell.detailTextLabel.text =[NSString stringWithFormat:@"原价:%@RMB",[dict objectForKey:@"lastPrice"]]; NSString *iconUrl = [dict objectForKey:@"iconUrl"]; //图片异步加载并设置默认图片 [cell.imageView setImageWithURL:[NSURL URLWithString:iconUrl] placeholderImage:[UIImage imageNamed:@"holderImage"]]; return cell; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end

 

转载于:https://www.cnblogs.com/0515offer/p/4655047.html

最新回复(0)