Zar*_*aki 1 iphone parsing uiprogressview
我正在使用XML文件进行解析.我想显示一个进度条,直到解析过程完成.如何计算ProgressView的进度?请帮助..
首先,计算行数.
NSError *error = nil;
NSString *xmlFileString = [NSString stringWithContentsOfURL:url
                           encoding:NSUTF8StringEncoding error:&error];
_totalLines = [xmlFileString componentsSeparatedByString:@"\n"].count;
然后,捕获委托方法块中的进度.例如:
- (void)parser:(NSXMLParser *)parser 
  didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI 
  qualifiedName:(NSString *)qName 
  attributes:(NSDictionary *)attributeDict
{
    [self.elementStack addObject:elementName];
    NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];
    [mainQueue addOperationWithBlock:^{
        _progressView.progress = (CGFloat)[parser lineNumber] / (CGFloat)_totalLines;
    }];
}
示例项目在这里:
https://github.com/weed/p120727_XMLParseProgress

如果要解析NSXMLParser并知道要解析的文件的长度,可以通过调用lineNumber解析器对象来告诉您解析器在文件中的位置,从而估算进度.
progressView.progress = (CGFloat)[parser lineNumber] / (CGFloat)totalLines;