首页 > 学院 > 开发设计 > 正文

ios之网络数据下载和JSON解析

2019-11-14 19:19:16
字体:
来源:转载
供稿:网友

ios之网络数据下载和JSON解析

简介

  在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据以及如何解析下载下来的JSON的数据格式,以及如何显示数据和图片的异步下载显示

  涉及到的知识应用:

  1.NSURLConnection异步下载和封装

  2.JSON格式和JSON格式解析

  3.数据显示和使用SDWebImage异步显示图片

内容

  1网络下载基础知识介绍

    什么是网络应用?

      一般情况下,iphone上绝大多数的应用都需要网络才能运行,就是网络应用。

    网络应用的程序结构

      在网络上运行一个程序为应用提供数据, 或者提供服务, 那么这个网络应用一般称为客户端, 而网络上运行的服务称为服务端。

    常见的网络接口形式

                 iOS网络应用常见的数据接口一般都是HTTP形式的URL地址。

    界面开发的一般流程

      下载数据  NSURLConnection+URL 

      解析数据  JSON/xml

      建立数据模型model

      创建视图 使用视图显示

                 tableView +定制cell

                 图片异步下载SDWeblmage

  2NSURLConnection的使用

    NSString同步下载数据

    

NSError *error = nil;    NSURL *url = [NSURL URLWithString:urlString];    NSString *content = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];    if (error==nil) {        NSLog(@"content = %@",content);    }    else    {        NSLog(@"下载失败");    }

  

    NSURLConnection 同步下载

NSURL *url = [NSURL URLWithString:urlString];    NSURLRequest *request = [NSURLRequest requestWithURL:url];    NSError *error = nil;    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];    if(error == nil)    {        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];        NSLog(@"str = %@",str);    }    else    {        NSLog(@"下载失败");    }

  

    NSURLConnection 异步下载

    

@PRoperty (copy,nonatomic) NSMutableData *data;//作用://  传入网址, 下载完成执行后执行target对象中action方法-(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action;@interface ZJHttpRequest ()<NSURLConnectionDataDelegate>{    NSURLConnection *_connection;    NSString *_url;    id _target;    SEL _action;}@end@implementation ZJHttpRequest//作用://  传入网址, 下载完成执行后执行target对象中action方法-(void)requestWithUrl:(NSString *)url               target:(id)target               action:(SEL)action{    _url = url;    _target = target;    _action = action;        //发起URL请求    _data = [[NSMutableData alloc] init];    _connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:self startImmediately:YES];}-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{    [_data appendData:data];}-(void)connectionDidFinishLoading:(NSURLConnection *)connection{    //下载完成了, 执行保存的方法    if(_target && [_target respondsToSelector:_action])    {        [_target performSelector:_action withObject:self];    }    }

  

  3JSON格式说明和格式化工具

 

    

JSON格式

    {

        "count":20,

        "data":[

            "zhangsan",

            "lisi",

            "wangwu"

        ]

    }

    []    表示数组,对应NSArray

    ,     表示并列的数据

    {}    表示字典,对应NSDictionary

    :     表示键值对

    "xxx"  表示字符串,对应NSString

    20    对应NSNumber

  4一个完成页面的实现(包含model的创建,SDWebImage的使用)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表