首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cocoa -应用程序在从XML加载数据期间冻结

Cocoa -应用程序在从XML加载数据期间冻结
EN

Stack Overflow用户
提问于 2012-05-15 23:44:22
回答 2查看 298关注 0票数 0

我正在从一个XML文件加载大量数据。这些数据正在“冻结”应用程序。我希望在加载数据的时间内显示进度条。

我如何知道大部分操作已经完成,以便我可以更改进度条显示的百分比?谢谢。已应答

编辑:主要问题是应用程序在加载过程中冻结,因为需要解析的数据量很大。有些人建议使用后台线程来加载和解析数据。这可行吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-15 23:49:11

以4k的速度将文件读入内存?显示加载的字节数与文件大小的过程?

另外,计算出总的行数和解析器当前所在的行。

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html#//apple_ref/occ/instm/NSXMLParser/lineNumber

假设您使用的是NSXMLParser

“冻结”来自于您在主线程上执行加载/解析。如果可以,您可以使用GCD,尝试执行一个dispatch_async (),并在完成时将更新发送到主线程,并更新进度。

票数 2
EN

Stack Overflow用户

发布于 2012-05-16 00:25:36

如果您使用是NSXML解析器,

代码语言:javascript
复制
NSUInteger count = [[rootElement nodesForXPath:@"//Video" error:&error] count];
//this will give you the number of elements
//then after parsing each element, calculate the percentage of elements parsed. 

//i.e. num_of_elements_parsed/total_no_elements*100;
//based on this value, use a del;egate method to update your NSProgressIndicator 
// in this method increment the  num_of_elements_parsed counter
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {

    if ([elementName isEqualToString:@"resident"]) {

        self.count += 1; 

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10604278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档