如果我第一次使用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
{
}
答案 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:”方法。