I currently have a view controller that implements ASIHTTP for handling API calls.
My view controller fires 2 separate calls. I need to be able to distinguish between the 2 calls in the -requestFinished(ASIHTTPRequest*)request method, so I can parse each one accordingly...
Is there any of doing this?
Use the userInfo field! That's what it's for!
An ASIHTTPRequest (or an ASIFormDataRequest) object has a property called .userInfo that can take an NSDictionary with anything in it you want. So I pretty much always go:
- (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.
}
}
Set a different value for the object at key @"type"
in each different ASIHTTPRequest you do in this view controller, and you can now distinguish between them in -requestFinished:
and handle each of them appropriately.
If you're really fancy, you can carry along any other data that would be useful when the request finishes. For instance, if you're lazy-loading images, you can pass yourself a handle to the UIImageView that you want to populate, and then do that in -requestFinished
after you've loaded the image data!
You can inspect the request
parameter passed to your requestFinished:(ASIHTTPRequest *)request
method to differentiate between the two calls.
For example, if the two calls have different URLs, you can inspect the request.url
property to differentiate between the two requests.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With