我在 documentation 中阅读了有关使用 ASIHTTPRequest 在我的应用程序中实现自定义进度跟踪的信息。 。它提到实现 2 个方法,request:didReceiveBytes:
和 request:incrementDownloadSizeBy:
。我已将它们添加到我的 View Controller 中,但它们没有被调用。我现在只是想让示例代码正常工作。
// ViewController.m
- (void)fetchThisURLFiveTimes:(NSURL *)url
{
[myQueue cancelAllOperations];
[myQueue setDownloadProgressDelegate:self];
[myQueue setDelegate:self];
[myQueue setRequestDidFinishSelector:@selector(queueComplete:)];
int i;
for (i=0; i<5; i++) {
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.showAccurateProgress = YES;
[myQueue addOperation:request];
}
myQueue.showAccurateProgress = YES;
[myQueue go];
}
- (void)queueComplete:(ASINetworkQueue *)queue
{
NSLog(@"Value: %f", [myProgressIndicator progress]);
}
- (void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes
{
NSLog(@"bytes: %lld", bytes);
}
- (void)request:(ASIHTTPRequest *)request incrementDownloadSizeBy:(long long)newLength
{
NSLog(@"newLength: %lld", newLength);
}
我在这里做错了什么?
最佳答案
哇。因此,放置 self.myQueue.showAccurateProgress = YES;
行的位置非常重要。必须将其添加到行 [self.myQueue addOperation:request];
之前。这对我有用。
- (void)fetchThisURLFiveTimes:(NSURL *)url
{
[self.myQueue cancelAllOperations];
[self setMyQueue:[ASINetworkQueue queue]];
[self.myQueue setDownloadProgressDelegate:self];
[self.myQueue setDelegate:self];
[self.myQueue setQueueDidFinishSelector:@selector(queueFinished:)];
self.myQueue.showAccurateProgress = YES;
int i;
for (i=0; i<5; i++) {
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[self.myQueue addOperation:request];
}
[self.myQueue go];
}
- (void)queueFinished:(ASINetworkQueue *)queue
{
if ([self.myQueue requestsCount] == 0) {
[self setMyQueue:nil];
}
NSLog(@"Queue finished");
}
- (void)setProgress:(float)newProgress {
NSLog(@"progress: %f", newProgress);
}
为了解决这个问题浪费了 6 个小时。我希望这可以避免一些人的烦恼。
关于iphone - ASIHTTPRequest 自定义进度跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668824/