iOS NSURL 同步&异步&参数&解析等信息

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

2.  网络连接方法介绍

================================================================================

1>  NSURL

// 要访问的资源路径,NSURL封装了内部方法,可以方便访问URL使用的协议,主机,路径以及参数等信息

NSURL *url = [NSURL URLWithString:@"http://localhost/videos.josn"];


2请求

/**

 参数:

 1. url                 要访问的资源路径

 

 2. cachePolicy         缓存策略

 

 NSURLRequestUseProtocolCachePolicy = 0,            默认缓存策略

 NSURLRequestReloadIgnoringLocalCacheData = 1,      忽略本地缓存,始终从服务器加载数据,用于对数据及时性要求比较高的网络访问

 例如:股票、彩票等

 NSURLRequestReturnCacheDataElseLoad = 2,           如果有缓存则加载缓存,否则从网络加载数据

 NSURLRequestReturnCacheDataDontLoad = 3,           如果有缓存就使用缓存,不从服务器加载

 

 3. timeoutInterval     超时时长,默认60.0秒,建议2030

 SDWebImage的默认超时时长是15

 */


3异步方法 - 所有网络操作都要使用异步方法


/**

 参数

 1. request:            发送给服务器的请求

 2. queue:              表示网络访问结束后,执行回调方法所在的队列

 * 如果不需要对返回数据做复杂的处理,可以直接使用主队列

 * 如果需要对返回数据做复杂处理,例如解压缩等耗时操作,可以新建一个队列

 

 3. completionHandler:  回调方法

 1> response:           服务器的响应

 2> data:               服务器返回的数据实体

 3> connectionError:    网络连接错误(服务器不能访问或者返回空数据)

 */

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    

    // 提示,一定注意要检测返回的数据是否为 null

    if (connectionError != nil || data == nil) {

        NSLog(@"%@", connectionError.description);

        return;

    }

    

    NSLog(@"%@", data);

}];


4同步方法

/**

 参数:

 1. request:            发送给服务器的请求

 2. &response:          服务器响应对象的地址

 3. &error:             网络访问错误地址(服务器不能访问或者返回空数据)

 

  OC 开发中,看到 ** 就传递对象地址

 指针的指针通常在C语言中,用于一个函数返回多个参数使用的技巧

 */

NSURLResponse *response = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];

NSLog(@"%@ %@", data, response);


NULL        空地址,0

nil         地址指向NULL的空对象


3.  JSON数据解析

================================================================================

1序列化 & 反序列化 概念介绍


2>  JSON 反序列化

/**

 NSJSONReadingMutableContainers          父节点可变

 NSJSONReadingMutableLeaves              叶子节点可变

 NSJSONReadingAllowFragments             允许父节点不是 NSDictionary 或者 NSArray

 

 提示:在OC中如果枚举类型是位移的,通常传人 0,表示什么附加操作也不做,效率最高!

 */

id result = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];


3>  Log分类简单介绍


4与归档的对比


知识点回顾:归档


/** 将对象保存至磁盘之前,将对象进行编码,所谓编码就是将对象转换成二进制数据 */

- (void)encodeWithCoder:(NSCoder *)encoder

/** 从磁盘加载对象的二进制数据后,需要对数据进行解码,所谓解码就是将二进制数据转换成对象 */

- (instancetype)initWithCoder:(NSCoder *)decoder


4.  JSONKit(知道就行)

================================================================================

参见 03-JSONKit笔记


5.  PList反序列化

================================================================================

/**

 NSPropertyListImmutable = 0,                   不可变

 NSPropertyListMutableContainers = 1,           容器可变

 NSPropertyListMutableContainersAndLeaves = 2   容器及子节点可变

 */

id result = [NSPropertyListSerialization propertyListWithData:data options:0 format:NULL error:NULL];


6.  XML反序列化

================================================================================

1基本概念

XML 可扩展标记语言,XML的格式与HTML类似,也是以<标记></标记>格式展现,我们熟悉的Plist就是一种特殊格式的XML


*   XML是专门设计用来表示数据的

*   HTML是专门设计用来展现页面的


2解析原理简介


3>  XMLParser的代理方法


#pragma mark - XML解析方法

// 1. 开始解析

- (void)parserDidStartDocument:(NSXMLParser *)parser

{

    NSLog(@"开始解析");

}


// 2. 开始节点

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

    NSLog(@"开始节点:%@ %@", elementName, attributeDict);

}


// 3. 发现文字,需要做拼接处理

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

    NSLog(@"发现文字 %@", string);

}


// 4. 结束节点

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

    NSLog(@"结束节点:%@", elementName);

}


// 5. 结束文档

- (void)parserDidEndDocument:(NSXMLParser *)parser

{

    NSLog(@"结束解析");

}


// 6. 解析错误

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError

{

    NSLog(@"解析错误");

}


4使用 GDataXML-HTML 框架实现文档解析

https://github.com/graetzer/GDataXML-HTML


# 每一对 <标记></标记> 都可以看成一个 GDataXMLElement

# 使用 - (NSArray *)attributes; 可以获得属性字典数组

  属性数组中保存的对象同样是 GDataXMLElement

# 通过 - (NSString *)name; 可以获得节点名称

# 通过 - (NSString *)stringValue; 可以获得节点字符串内容


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值