Используйте поле userInfo!Вот для чего он нужен!
У объекта ASIHTTPRequest (или ASIFormDataRequest) есть свойство .userInfo, которое может принимать NSDictionary со всем, что вам нужно.Поэтому я почти всегда повторяю:
- (void) viewDidLoad { // or wherever
ASIHTTPRequest *req = [ASIHTTPRequest requestWithUrl:theUrl];
req.delegate = self;
req.userInfo = [NSDictionary dictionaryWithObject:@"initialRequest" forKey:@"type"];
[req startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
if ([[request.userInfo valueForKey:@"type"] isEqualToString:@"initialRequest"]) {
// I know it's my "initialRequest" .req and not some other one!
// In here I might parse my JSON that the server replied with,
// assemble image URLs, and request them, with a userInfo
// field containing a dictionary with @"image" for the @"type", for instance.
}
}
Установите разные значения для объекта с ключом @"type"
в каждом отдельном запросе ASIHTTPRequest, который вы делаете в этом контроллере представления, и теперь вы можете различать их в -requestFinished:
и обрабатывать каждый из них соответствующим образом.
Если вы действительно хотите, вы можете взять с собой любые другие данные, которые были бы полезны, когда запрос завершится.Например, если вы загружаете ленивые изображения, вы можете передать дескриптор UIImageView, который вы хотите заполнить, а затем сделать это в -requestFinished
после загрузки данных изображения!