Passando blocos para um método AFNetworking?
-(void )getDataFromServer: (NSMutableDictionary *)dict
{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/doSomething",MainURL ]];
[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:nil parameters:dict];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
{
_myArray = JSON;
[_myTableView reloadData]; //Or do some other stuff that are related to the current `ViewController`
}
failure:^(NSURLRequest *request , NSURLResponse *response , NSError *error , id JSON)
{
NSLog(@"request: %@",request);
NSLog(@"Failed: %@",[error localizedDescription]);
}];
[httpClient enqueueHTTPRequestOperation:operation];
}
Estou usando o código acima em sete lugares diferentes em um dos meus apps. O pedaço exato de código é duplicado em 7 da minhaViewControllers
. O que eu normalmente costumava fazer é colocar o método que eu quero usar em uma classe NSObject e alocar e usá-lo sempre que eu preciso, mas porque o acima é assíncrono e usando blocos eu não posso simplesmente retornar o JSON para oViewController
quem chamou e tem que copiar e colar o método acima em todos osViewController
Eu preciso disso.
Meu objetivo é ter o acima em apenas um lugar no meu aplicativo e ainda poder chamá-lo de diferentesViewControllers
em torno do meu aplicativo e obter os dados que eu preciso. Eu gostaria de evitar usar um observador comoNSNotification
ouKVO
e procurando uma solução mais elegante. Depois de alguma leitura, notei a possibilidade de passar blocos ao redor. Essa é uma solução possível com o acima? Um exemplo de código seria apreciado.