在解析XML时设置ProgressView的进度

Zar*_*aki 1 iphone parsing uiprogressview

我正在使用XML文件进行解析.我想显示一个进度条,直到解析过程完成.如何计算ProgressView的进度?请帮助..

Fee*_*ics 6

首先,计算行数.

NSError *error = nil;
NSString *xmlFileString = [NSString stringWithContentsOfURL:url
                           encoding:NSUTF8StringEncoding error:&error];
_totalLines = [xmlFileString componentsSeparatedByString:@"\n"].count;
Run Code Online (Sandbox Code Playgroud)

然后,捕获委托方法块中的进度.例如:

- (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;
    }];
}
Run Code Online (Sandbox Code Playgroud)

示例项目在这里:

https://github.com/weed/p120727_XMLParseProgress

SS


jni*_*nic 5

如果要解析NSXMLParser并知道要解析的文件的长度,可以通过调用lineNumber解析器对象来告诉您解析器在文件中的位置,从而估算进度.

progressView.progress = (CGFloat)[parser lineNumber] / (CGFloat)totalLines;
Run Code Online (Sandbox Code Playgroud)