使用ASIHTTPRequest跟踪进度

时间:2011-05-09 14:05:03

标签: ios asihttprequest

我正在尝试与Web服务进行通信并检索数据,同时这样做,我尝试使用UIProgressView进行进度指示,以便用户知道发生了什么,但是,当我运行时,我看不到UIProgressView的进展。 这是我的相关代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    //start request
    NSURL *url=[NSURL URLWithString:@"http://iphone01.mtdgroup/admin_V01/stationsProcessing/pickers_management.php"];
    ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];
    [request setDelegate:self];
    [request setUploadProgressDelegate:loadingProgress];
    [request startAsynchronous];
    NSLog(@"value: %f",[loadingProgress progress]);
}

日志显示:value: 0.000000。 根据ASIHTTPRequest文档,将UIProgressView设置为uploadProgressDelegate的委托就足够了,ASIHTTPRequest将负责为我更新UIProgressView。 我错过了什么吗? thx for advance:)

2 个答案:

答案 0 :(得分:4)

您正在执行异步请求,因此NSLog会在请求开始后立即执行,此时进度实际上为零 - startAsynchronous实际上在后台使用了NSOperationQueue,因此如果您需要编写自己的委托代码想要NSLog进展:

在视图控制器中包含类似的内容:

- (void)setProgress:(float)newProgress {
   [loadingProgress setProgress:newProgress];
   NSLog(@"value: %f",[loadingProgress progress]);
}

并设置:

[request setUploadProgressDelegate:self];

答案 1 :(得分:0)

确保您的课程符合ASIProgressDelegate协议。

@interface YourClass : ... <ASIHTTPRequestDelegate,ASIProgressDelegate>