-(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];
}
Я использую вышеуказанный код в 7 разных местах в одном из моих приложений. Точный фрагмент кода дублируется в 7 моих ViewControllers
. То, что я обычно использовал, - это использовать метод, который я хочу использовать в классе NSObject, и выделять его и использовать, когда мне это нужно, но поскольку это выше, Async и использование блоков, я не могу просто вернуть JSON в ViewController
, который вызвал это и нужно скопировать & вставить вышеупомянутый метод в каждом ViewController
мне нужно это.Передача блоков методу AFNetworking?
Моя цель состоит в том, чтобы иметь выше только в одном месте в моем приложении и все еще быть в состоянии назвать его из разных ViewControllers
вокруг моего приложения и получить нужные мне данные. Я бы хотел избежать использования наблюдателя, такого как NSNotification
или KVO
, и ищет более элегантное решение. После некоторого чтения я заметил возможность пропускать блоки вокруг. Это возможное решение с вышесказанным? Будет оценен пример кода.
В дополнение к ответу Габриэле ниже, вы можете избежать поворота нового AFHTTPClient для каждого запроса. –
Я точно редактировал свой ответ. Спасибо за примечание. –