zoukankan      html  css  js  c++  java
  • iOS网络数据下载和JSON解析

    iOS网络数据下载和JSON解析

    简介

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

      涉及到的知识点:

      1.NSURLConnection异步下载和封装

    #import "ZJHttpRequest.h"
    
    //消除performSelector的警告
    #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
    
    //类扩展
    //项目实践:
    //  有些实例变量内部使用, 不想放在头文件中, 放在这儿
    @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];
        }
        
    }
    @end

      2.JSON格式和JSON格式解析

        JSON格式:

    {        //{}字典 ,[]数组
      "list" : [
        {
          "IsXuanZuo" : 0,
          "Name" : "“梁静茹·你的名字是爱情”2015世界巡回演唱会天津站",
          "PriceStr" : "299,399,599,799,999",
          "ProjectID" : 78647,
          "ShowTime" : "2015.07.25",
          "SiteStatus" : 8,
          "Summary" : "4月7日13:00大麦APP抢先开启先付预售!",
          "VenId" : 1403,
          "VenName" : "天津体育中心(大馆)",
          "cityname" : "天津市",
          "openSum" : 5836,
          "priceName" : "299-999元"
        },
      
      ...
    }

        JSON最简便的解析方法:

      NSJSONSerialization
       NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:request.data options:NSJSONReadingMutableContainers error:nil];

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

        SDWebImage  -- UIImageView+WebCache.h  

        需设置内存管理  --> Project --->Build Phases  -->将所有SD文件设置Compiler Flags

        

    内容

    1.网络下载基础知识介绍

      什么是网络应用?

      网络应用的程序结构

       C/S结构:Cilent客户端

            Server 服务端 

      常见的数据格式

        JSON/XML

      界面开发的一般流程

        界面模板--> 数据资源--> 下载数据,解析-->设计界面,刷新

    2.NSURLConnection使用

      NSString同步,NSURLConnection同步  --> 同步下载界面会卡(一般不用)

      NSURLConnection异步

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

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

       MVC模式 -->M:model  , V:view  , C:controller    

      数据下载--> 解析 --> 提取数据于model中 --> 建立cell 设置数据

  • 相关阅读:
    gerrit 修改前一次提交的方法(转载)
    数据结构实验之图论六:村村通公路 【克鲁斯卡尔算法】
    数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
    数据结构实验之图论四:迷宫探索【dfs 求路径】
    Java 【打印俄文的英文字母】
    【留给自己的独白,长大了】
    Java 【 ArrayList应用 】 (SDUT 4069 C~K的班级)
    你的勇气去哪里了
    Java的 「 “ 结构体 ”」 与 「 “ 自定义排序 ” 」
    Java 中的 SimpleDateFormat 【 parse 和 format 】【转换时间格式】
  • 原文地址:https://www.cnblogs.com/wlrBlogs/p/4384484.html
Copyright © 2011-2022 走看看