ios - AFHTTPSessionManager Delegate issue -


here issue: have afhttpsessionmanager file, singleton, , manage api requests server. once got answer server responseobject, pass uiviewcontroller asked using delegate.

my problem : since manager singleton, if api request made in meantime uiviewcontroller, delegate set controller , when first request responseobject received can't pass first uiviewcontroller anymore.

i hope it's easy understand.

what right way solve problem ?

here method looks in afhttpsessionmanager class :

- (void)getstaffforcompany:(int)companyid {     if ([[nsuserdefaults standarduserdefaults] objectforkey:@"currentuser"])     {         nsmutabledictionary *parameters = [nsmutabledictionary dictionary];         parameters[@"apikey"] = agendizeapikey;         parameters[@"token"] = [[agzusermanager sharedagzuser] currentapplicationuser].token;          [self get:[nsstring stringwithformat:@"scheduling/companies/%d/staff", companyid] parameters:parameters success:^(nsurlsessiondatatask *task, id responseobject) {             if ([self.delegate respondstoselector:@selector(agzclient:successedreceivestafflist:)]) {                 [self.delegate agzclient:self successedreceivestafflist:responseobject];             }         } failure:^(nsurlsessiondatatask *task, nserror *error) {             if ([self.delegate respondstoselector:@selector(agzclient:failedreceivestafflist:)]) {                 [self.delegate agzclient:self failedreceivestafflist:error];             }         }];     } } 

thanks!

you define own completion block , pass responseobject controller, here example customcompletion.

add afhttpsessionmanager.h above @implementation line.

typedef void(^customcompletion)(id responseobject); 

update method include customcompletion object.

- (void)getstaffforcompany:(int)companyid withcompletion:(customcompletion)completion {     // on success pass responseobject so.     completion(responseobject); } 

then where magic happens, in controller call method on singleton , handle completion.

[singletonmanager getstaffforcompany:1 withcompletion:^(id responseobject) {     if (responseobject) {         // object     } }]; 

i haven't tested code, similar in swift , works treat.


Comments

Popular posts from this blog

css - SVG using textPath a symbol not rendering in Firefox -

Java 8 + Maven Javadoc plugin: Error fetching URL -

datatable - Matlab struct computations -