zoukankan      html  css  js  c++  java
  • UI1_HTTP下载

    //  DataModel.h
    //  UI1_HTTP下载
    //
    //  Created by zhangxueming on 15/7/17.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface DataModel : NSObject
    
    @property (nonatomic, copy)NSString *name;
    @property (nonatomic, assign)NSInteger downloads;
    
    @end
    
    
    //  DataModel.m
    //  UI1_HTTP下载
    //
    //  Created by zhangxueming on 15/7/17.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "DataModel.h"
    
    @implementation DataModel
    
    - (NSString *)description
    {
        return [NSString stringWithFormat:@"name = %@ downloads = %li", _name, _downloads];
    }
    
    @end
    
    //  AppDelegate.m
    //  UI1_HTTP下载
    //
    //  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
    //  UI1_HTTP下载
    //
    //  Created by zhangxueming on 15/7/17.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface ViewController : UITableViewController
    
    
    @end
    
    //
    //  ViewController.m
    //  UI1_HTTP下载
    //
    //  Created by zhangxueming on 15/7/17.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "DataModel.h"
    
    //www.baicom.com
    //http协议: 超文本传输协议  ftp://
    //报文
    //HttpURL格式:
    //http://  协议类型
    //iappfree.candou.com 主机地址
    //:8080 端口号
    ///free/applications/limited? 主机执行程序文件路径
    //currency=rmb&page=1  主机执行程序需要的参数 每个参数之间用&隔开
    
    @interface ViewController ()
    {
        NSMutableArray *_dataList;
        //NSMutableData *_data;
    }
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        _dataList = [NSMutableArray array];
        
        [self loadDataWithPage:4];
    }
    
    //http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=1
    
    //客户端    服务器
    
    - (void)loadDataWithPage:(NSInteger)page
    {
        NSString *urlString = [NSString stringWithFormat:@"http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=%ld", page];
        
        NSURL *url = [NSURL URLWithString:urlString];
        //下载数据
        NSString *dataString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
        //NSLog(@"dataString = %@", dataString);
        
        //转换成data
        NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
        //json解析
        id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        if ([result isKindOfClass:[NSDictionary class]]) {
            //字典
            NSArray *app = [result objectForKey:@"applications"];
            //NSLog(@"app= %@", app);
            //[_dataList addObjectsFromArray:app];
            for (NSDictionary *dict in app) {
                DataModel *model = [[DataModel alloc] init];
                NSString *appName = [dict objectForKey:@"name"];
                NSNumber *downloads = [dict objectForKey:@"downloads"];
                model.name  = appName;
                model.downloads = [downloads integerValue];
                [_dataList addObject:model];
            }
            NSLog(@"dataList = %@", _dataList);
        }
        else if([result isKindOfClass:[NSArray class]])
        {
            //数组
        
        }
    }
    
    #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];
        }
    
        DataModel *model = (DataModel *)_dataList[indexPath.row];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.textLabel.text = model.name;
        cell.detailTextLabel.text =[NSString stringWithFormat:@"下载次数:%li",model.downloads];
        return cell;
    }
    
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    
  • 相关阅读:
    Sizzle源码分析 (一)
    VueJS 数据驱动和依赖追踪分析
    使用 nvm 来管理nodejs版本 。
    在node中使用 ES6
    mongoDB & Nodejs 访问mongoDB (二)
    mongoDB & Nodejs 访问mongoDB (一)
    Javascript原型链和原型继承
    Javascript 闭包与高阶函数 ( 二 )
    SDOI2019&十二省联考 游记
    Luogu-3648 [APIO2014]序列分割
  • 原文地址:https://www.cnblogs.com/0515offer/p/4653977.html
Copyright © 2011-2022 走看看