网络编程归纳总结三阶段

网络编程归纳总结三阶段

解析plist文件

类: NSPropertyListSerialization

有一个解析数据的类方法 :propertyListWithData

字典转模型时 如果字典中的键值对多于模型的属性个数 就会报错 这时 需要重写

- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}方法
解析时间

记录时间的类:
NSCakendar

    //把数字的日期,转换成日期对象
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:self.addtime.intValue];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    //两个日期相减,获取指定的日期部分
    NSDateComponents *components = [calendar components:NSCalendarUnitMinute fromDate:date toDate:[NSDate date] options:0];
    if (components.minute < 60) {
        return [NSString stringWithFormat:@"%zd分钟以前",components.minute];
    }
    //获取小时
    components = [calendar components:NSCalendarUnitHour fromDate:date toDate:[NSDate date] options:0];
    if (components.hour < 24) {
        return [NSString stringWithFormat:@"%zd小时以前",components.hour];
    }
    //获取日期
    NSDateFormatter *ndf = [[NSDateFormatter alloc] init];
//    ndf.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    ndf.dateFormat = @"MM-dd HH:mm";
    return [ndf stringFromDate:date];
XML

XML (扩展式标记语言)
作用是存储和传输数据
HTML (超文本传输语言) 作用是显示数据
是以前最常用的传输文件格式

是由标记组成的 有且只能有一个根节点 节点中可以任意嵌套

XML的解析

两种方式:
SAX : iOS中的解析方式 内存占用小 只读
DOM: mac上的解析方式 iOS无法使用 需要第三方框架 内存占用大 可以读写

SAX步骤:
//解析数据
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
//设置代理
parser.delegate = self;
//开始执行代理的方法,代理的方法中开始解析的
[parser parse];
 //需要设置代理
//代理方法执行  和 设置代理属性在同一个线程
//代理的方法
//1 开始解析文档
- (void)parserDidStartDocument:(NSXMLParser *)parser {
    NSLog(@"1 开始解析文档  %@",[NSThread currentThread]);
}
//2 找开始节点
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict {
    //elementName 节点的名称
    //attributeDict  标签的属性
    NSLog(@"2 找开始节点  %@--%@",elementName,attributeDict);
}
//3 找节点之间的内容
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    //
    NSLog(@"3 找节点之间的内容 %@",string);
}
//4 找结束节点
- (void)parser:(NSXMLParser *)parser :(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    //elementName 节点名称
    NSLog(@"4 找结束节点 %@",elementName);
}
//5 结束解析文档
- (void)parserDidEndDocument:(NSXMLParser *)parser {
    NSLog(@"5 结束解析文档");
}
//6 解析出错
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    NSLog(@"出错");
}
DOM解析步骤:
//解析数据
//DOM 文档对象模型
//1  加载xml文档
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data error:NULL];
//获取xml文档的根元素(标签)
GDataXMLElement *rootElement = document.rootElement;
//            NSLog(@"%@",rootElement);
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10];
//2 遍历所有的video节点 h]
for (GDataXMLElement *element in rootElement.children) {
//创建对象
Video *v = [[Video alloc] init];
[mArray addObject:v];
//给对象的属性赋值
//3 遍历video的子标签
for (GDataXMLElement *subElement in element.children) {
//给属性赋值
[v setValue:subElement.stringValue forKey:subElement.name];
}
//4 遍历video的所有属性
//                NSLog(@"%@",element.attributes);
for (GDataXMLNode *attr in element.attributes) {
[v setValue:attr.stringValue forKey:attr.name];
}

最近才开始往github上放东西 在公司写的又不能放= = 大家姑且看看吧

github地址: https://github.com/FuThD

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值