Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用在NSObject类上创建的ASIHTTPRequest添加下载进度条_Ios_Objective C - Fatal编程技术网

Ios 使用在NSObject类上创建的ASIHTTPRequest添加下载进度条

Ios 使用在NSObject类上创建的ASIHTTPRequest添加下载进度条,ios,objective-c,Ios,Objective C,我有一个全局NSObject类,我在其中添加了一个ASIHTTPRequest函数来更新我的应用程序。我已在ViewController类上设置UIProgressView。NSObject类如下所示: +(void)updateAllWithCategory:(NSMutableArray *)categories{ for(NSMutableArray *item in categories) { NSString *urlString = [NSString stringWithF

我有一个全局NSObject类,我在其中添加了一个ASIHTTPRequest函数来更新我的应用程序。我已在ViewController类上设置UIProgressView。NSObject类如下所示:

+(void)updateAllWithCategory:(NSMutableArray *)categories{
for(NSMutableArray *item in categories) {
    NSString *urlString = [NSString stringWithFormat:@"http://mywebsite.com/%@.xml", item];
    NSURL *url = [[NSURL alloc]initWithString:urlString];
    __block __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setShowAccurateProgress:YES];
    [request setDownloadProgressDelegate:self];
    [request setTimeOutSeconds:20];
    [request setCompletionBlock:^{
        //download all data and show alert
    }];
    [request setFailedBlock:^{
        //display all errors
    }];
    [request startAsynchronous];
}}

float bytesReceived = 0;
float totalSize = 0;
float estimate = 0;

+(void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes {

bytesReceived = bytesReceived + (float)bytes;
float dlSize = (float)[request contentLength];
totalSize = totalSize + dlSize;

estimate = (bytesReceived / (totalSize * 1.0f) * 100);

//write estimate in plist with value estTime
}
然后在我的视图控制器上,我使用上述函数,如下所示:

-(void)updateChecker {
//get estTime from plist
[GlobalClass updateAllWithCategory:myArray]
progressbar.hidden = NO;
[progressbar setProgress:estTime animated: YES];
progressbar.progress = estTime;
}

updateChecker是通过viewDidLoad上的NSTimer集调用的。设置进度:未设置动画:也未设置。进度无效。我的进度条一点也不动。所以我的问题是,如何为从全局NSObject类调用的ASIHTTPRequest实现进度条?

您需要创建一个
UIProgressView

UIProgressView *progressView = [UIProgressView alloc] init];
然后更换这个

  [request setDownloadProgressDelegate:self];
用这个

[request setDownloadProgressDelegate:progressView];

我能问一下为什么选择AsiTRequest而不是AFNetworking吗?除非您有理由支持传统设备,否则可能值得研究。