网络编程归纳总结三阶段

来源:互联网 发布:淘宝v6会员有多少人 编辑:程序博客网 时间:2024/06/02 14:58

网络编程归纳总结三阶段

解析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
原创粉丝点击