加载 XML 数据
loadData
- (void)loadData {
NSURL *url = [NSURL URLWithString:@"http://localhost/videos.xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
}];
}
代理方法 - 添加 Log 确认思路
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSLog(@"1. 开始文档");
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
NSLog(@"2. 开始节点 %@ %@", elementName, attributeDict);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(@"==> %@", string);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
NSLog(@"4. 结束节点 %@", elementName);
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
NSLog(@"5. 解析结束");
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSLog(@"解析错误 %@", parseError);
}
整理思路,确定素材
video 模型
@interface Video : NSObject
@property (nonatomic, copy) NSNumber *videoId;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSNumber *length;
@property (nonatomic, copy) NSString *videoURL;
@property (nonatomic, copy) NSString *imageURL;
@property (nonatomic, copy) NSString *desc;
@property (nonatomic, copy) NSString *teacher;
+ (instancetype)videoWithDict:(NSDictionary *)dict;
@end
确定素材
@property (nonatomic, strong) NSMutableArray *videos;
@property (nonatomic, strong) Video *currentVideo;
@property (nonatomic, strong) NSMutableString *elementString;
懒加载
- (NSMutableArray *)videos {
if (_videos == nil) {
_videos = [[NSMutableArray alloc] init];
}
return _videos;
}
- (NSMutableString *)elementString {
if (_elementString == nil) {
_elementString = [[NSMutableString alloc] init];
}
return _elementString;
}