网络小理解

网络理解##

1.因为网络是需要考虑超时时长的,是耗时操作,所有需要用线程处理.

  1. NSURL *url = [NSURL urlWithString:@"https://baidu.com"];//通过一个标识符标识网络
    NSURLRequest *request = [NSURLRequest requestWithURL:url];//创建一个网络请求.

    //网络请求数据一般用异步请求,加入主队列,在主线程执行.主线程一般用于UI更新.
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]completionHandler:^(NSURLResponse *_Nullable response,NSData *_Nullable data, NSError *_Nullable connectionError) {
    //判断是否连接错误,最好打印一下,返回错误原因.
    if(connectionError){
    NSLog(@"连接错误%@",connectionError);
    return;
    }
    //创建服务器响应
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
    //判断状态码,状态码正确,才可以接受数据实体,因为服务器响应会返回状态码和数据实体.
    if(httpResponse.statuesCode == 200||httpResponse.statuesCode == 304) {
    //JSON是一种特殊的字符串.可能是字典,可能是数组
    //解析数据JSON形式的字符串转换成OC对象.
    //这里用苹果自带的JSON解析,高效.
    NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
    NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10]; //capacity:容纳量.
    //反向遍历--降序遍历
    [array enumerateObjectsUsingBlock:^(id _Nonnull obj,NSUInteger idx,BOOL *_Nonnull stop){
    QYNews *news = [QYNews newsWithDict:obj];
    [mArray addObject:news];
    }];

<font color=green>//Block遍历优点:
1)遍历可以从block中直接获取需要的所有信息,包括下标,值等.特别是字典,不需要多余代码就可以获得key,value的值.
2)能够直接修改block中key或者obj的类型为真实类型,可以省去类型转换的工作.
3)可以通过NSEnumerationConcurrent枚举值开启并发迭代功能.</font>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,252评论 1 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,031评论 0 13
  • 大脑
    1人的乌托邦阅读 169评论 0 0
  • 有时候真的觉得,快要被这现实逼死了,想做一件自己喜欢的事情,都这么难我已经够拼命了,够努力了,就因为没有经历过累...
    行走世间全是妖怪_阅读 200评论 0 0