2017-10-18 13 views
1

Y at-il un moyen de garder notre service web de déléguer des méthodes dans une classe et de les utiliser quand cela est nécessaire? Normalement, je continuais à écrire les délégués dans toutes les classes telles que didReceiveResponse et didReceiveData etc.iOS Objective C Webservice

Répondre

0

Il existe un moyen de faire ce que vous voulez accomplir, mais assurez-vous de ne pas en faire trop. Trop d'utilisation de singletons est généralement reconnue comme une mauvaise pratique.

Créez un Singleton que vous pourriez utiliser dans votre application.

https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/Singleton.html

Dans votre Singleton: APISingleton

-(void)APIRequestWithParams:(NSMutableDictionary*)params 
     onCompletion:(JSONResponseBlock)completionBlock 
      onFailure:(OperationFailureBlock)failureBlock{ 
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
[manager GET:kGymEverAPIfullUrl 
    parameters:params 
    success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     completionBlock(responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     failureBlock(operation); 
    }];} 

Comment utiliser:

-(void)getImages{ 

NSMutableDictionary *params = [[NSMutableDictionary alloc]initWithObjectsAndKeys:[NSString stringWithFormat:@"%ld",1],@"page",@"5",@"count", nil]; 

[[APISingleton sharedInstance] APIRequestWithParams:params onCompletion:^(id json) { 
    postsArray = [json objectForKey:@"posts"]; 
    [self downloadImages]; 
} onFailure:^(AFHTTPRequestOperation *operation) { 
    //Do whatever you want if it does not work. 
}];} 

utilisant: https://github.com/AFNetworking/AFNetworking