Oksana
Oksana

Reputation: 13942

How to pass additional parameters to ASIHTTPRequest didFinishSelector selector

Im building api for our rest api using ASIHTTPRequest.

Api wraps all requests to its own methods.

- (void) foo:(id)caller 
     andSuccessCallback:(SEL)successCallback 
     andFailureCallback:(SEL)failureCallback {

    _currentCaller=caller;
    _currentSuccessCallback=successCallback;
    _currentFailureCallback=failureCallback;

    NSString *urlString = @"http://localhost/foo";
    NSURL *url= [NSURL URLWithString: urlString];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector(fooSuccess:)];
    [request startAsynchronous];
}

- (void) fooSuccess:(ASIHTTPRequest *)request {
    if (statusCode >=400) {
     if ([_currentCaller respondsToSelector:_currentFailureCallback])
        [_currentCaller performSelector:_currentFailureCallback withObject:statusCode withObject:message];
} else {
    if ([_currentCaller respondsToSelector:_currentSuccessCallback])
        [_currentCaller performSelector:_currentSuccessCallback];
} 
    [request release];
}

Currently to pass callback selector I use class private variables _currentCaller _currentSuccessCallback _currentFailureCallback=failureCallback

Can i pass them to fooSuccess callback directly?

Upvotes: 0

Views: 1201

Answers (1)

Felix
Felix

Reputation: 812

You can pass objects by populating a NSDictionary and setting it as the request's userInfo property.

Upvotes: 4

Related Questions