iphone - 如何使用 RaptureXML 和 AFNetworking 在 UITableView 上动态显示解析的 XML 内容?

标签 iphone objective-c cocoa-touch uitableview afnetworking

我正在使用RaptureXML和包装AFRaptureXMLRequestOperation集成AFNetworkingRaptureXML .

下面的代码工作正常。一切顺利,下载、解析并显示 UITableView 中的内容。 .

当我在后台进行下载和解析时,我更新了 UITableView关于Main Thread异步

唯一的问题是,UITableView 的内容仅在解析 XML 的所有元素并将其插入适当的 NSMutableArrays 后才显示。 ,有时需要一段时间。

我的问题:

有没有办法动态显示 UITableView 的内容当它们被下载和解析时,NSMutableArrays正在填充数据,例如使用 JASON 的示例来自 Twitter 的文件?

有代码:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

       [self downloadParsePlayListXML];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
});

- (void)downloadParsePlayListXML {

NSString *url = @"http://example.net/playlist/xmlfiles/playlist.xml";
AFRaptureXMLRequestOperation *operation = [AFRaptureXMLRequestOperation XMLParserRequestOperationWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] success:^(NSURLRequest *request, NSHTTPURLResponse *response, RXMLElement *XMLElement) {

    [XMLElement iterateWithRootXPath:@"//program" usingBlock: ^(RXMLElement *program) {

        [self.programs addObject:[program attribute:@"name"]];
        [self.speakers addObject:[program child:@"speaker"].text];


    }];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, RXMLElement *XMLElement) {
    // Handle Error
}];

[operation start]; 

}

非常感谢您的帮助!

最佳答案

直到今天晚些时候我才能对此进行测试,但我会尝试一下。注意:我不熟悉 RaptureXML。

首先,请参阅几天前关于解析 XML 的这篇文章。 https://stackoverflow.com/a/16047964/1710611

然后,在解析过程中,每次到达元素末尾时,您都将其添加到数组(用作 UITableView 数据源)并刷新表格。

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([elementName isEqualToString:@"YOURTAG"]) {
        // finished getting the data in <YOURTAG>

        // do something now that you've got your data retrieved
        if (self.currentProperty) {
            [YOURDATASOURCEARRAY addObject:self.currentProperty];
            [tableView reloadData];
        }
    }  
}

或者,您也可以尝试将 [tableView reloadData] 替换为:

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:YOURINDEXPATHARRAY withRowAnimation:YOURANIMATION];
[tableView endUpdates];

关于iphone - 如何使用 RaptureXML 和 AFNetworking 在 UITableView 上动态显示解析的 XML 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106779/

相关文章:

ios - 应用扩展找不到图像

ios - RestKit 中带有 Core Data 的临时对象的最佳实践

iphone - UITableView 清晰颜色问题

ios - 多个方向更改后转换后的 UIView 框架困惑

ios - 在 UITextView 中将 NSMutableArray 对象显示为文本

iphone - pdf 作为 iOS 设备中的电子邮件附件

objective-c - verseGeocodeLocation 存储为 NSString 产生错误

iphone - 响应式 img 调整大小在 iPad 上不起作用

iphone - 下载文件时如何为 NSURLConnection 制作进度条?

ios - 阻止 iOS 将单词添加到 UITextField 中输入的字典中?