在同一个类中使用两个ASIHTTPRequest

时间:2011-12-08 22:46:08

标签: iphone objective-c asihttprequest

如果我第一次使用ASIHTTPRequest,使用asynchroun模式,我会在

中重现结果和错误
  
      
  • (void)requestFinished:(ASIHTTPRequest *)请求   
  • 中的错误   
  • (void)requestFailed:(ASIHTTPRequest *)request
  •   

但如果我异步进行另一个查询怎么办?我会用同样的方法收到结果吗?如何知道这是第一个查询还是第二个查询的结果?我试图改变代表,但它不起作用

-(void)getCities
{
    NSString * myURLString = [NSString stringWithFormat:@"http://localhost:8080/Data/resources/converter.city/CountryCode/%@",choosedCodeCity];

    NSURL *url =[NSURL URLWithString:myURLString];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:resultCities];
    [request startAsynchronous];


}

-(void)resultCities :(ASIHTTPRequest *)request
{

}

2 个答案:

答案 0 :(得分:1)

ASIHttpRequest具有NSDictionary* userInfo属性,您可以使用该属性存储您喜欢的任何内容。您可以简单地在此字典中添加一个标志,以便将这两个请求分开。

另一种方法是使用ASIHttpRequest方法来获取块而不是使用委托。

修改 要使用标志方法,在创建请求对象时,请执行类似

的操作
[request.userInfo setObject:[NSNumber numberWithInt:1] forKey:@"flag"];

然后在响应方法中,您可以请求标志请求来确定它是哪个请求。

int flag = [[request.userInfo objectForKey:@"flag"] intValue];

答案 1 :(得分:1)

你可以这样做:

request.didFinishSelector = @selector(yourFinishMethodHere:);
request.didFailSelector = @selector(yourFailMethodHere:);

换句话说,您不必在委托上使用默认的“requestFinished:”和“requestFailed:”方法。