Ios 使用ASIHTTPRequest跟踪进度

Ios 使用ASIHTTPRequest跟踪进度,ios,asihttprequest,Ios,Asihttprequest,我试图与web服务通信并检索数据,同时,我尝试使用UIProgressView指示进度,以便用户知道发生了什么,但是,当我运行时,我在UIProgressView上看不到进度。 这是我的相关代码: - (void)viewDidLoad { [super viewDidLoad]; //start request NSURL *url=[NSURL URLWithString:@"http://iphone01.mtdgroup/admin_V01/stationsPro

我试图与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]);
}
日志显示:
值:0.000000
。 根据ASIHTTPRequest文档,将
UIProgressView
设置为
uploadProgressDelegate
的委托就足够了,ASIHTTPRequest将负责为我更新UIProgressView。
我错过什么了吗?thx for advance:)

您正在执行一个异步请求,因此NSLog在请求启动后立即执行,此时进度实际上为零-StartSynchronous在后台实际使用NSOperationQueue,因此如果您希望NSLog进度,您需要为自己的代理编写代码:

只需在视图控制器中包含以下内容:

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

[request setUploadProgressDelegate:self];

您正在执行一个异步请求,因此NSLog在请求启动后立即执行,此时进度实际上为零-startAsynchronous在后台实际使用NSOperationQueue,因此如果您希望NSLog进度,您需要为自己的代理编写代码:

只需在视图控制器中包含以下内容:

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

[request setUploadProgressDelegate:self];

确保您的类也符合
ASIProgressDelegate
协议

@interface YourClass : ... <ASIHTTPRequestDelegate,ASIProgressDelegate>
@接口YourClass:。。。

确保您的类也符合
ASIProgressDelegate
协议

@interface YourClass : ... <ASIHTTPRequestDelegate,ASIProgressDelegate>
@接口YourClass:。。。

当调用此方法时,是否会在进度更新时自动调用此方法。顺便说一句,您应该真正连接(void)requestFailed:(ASIHTTPRequest*)请求委托方法,以便在异步启动后查看请求是否有错误。您好,这不起作用,在日志中总是相同的值
0.000000
我必须提到,我使用
requestFailed
requestFinished
方法来管理请求:)当调用此方法时,是否会自动调用?当进度更新时。顺便说一句,您应该真正连接(void)requestFailed:(ASIHTTPRequest*)请求委托方法,以便在异步启动后查看请求是否有错误。您好,这不起作用,在日志中始终使用相同的值
0.000000
我必须提到我使用
requestFailed
requestFinished
方法来管理请求:)