-(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 类中,并在我需要时分配和使用它,但是因为上面是异步的并且使用块我不能只将 JSON 返回给ViewController
调用它的人并且必须在ViewController
我需要的每个地方复制并粘贴上述方法。
我的目标是在我的应用程序中仅将上述内容放在一个位置,并且仍然能够从ViewControllers
我的应用程序周围的不同位置调用它并获取我需要的数据。我想避免使用诸如NSNotification
or之类的观察者KVO
并寻找更优雅的解决方案。经过一番阅读,我注意到可以传递块。以上是可能的解决方案吗?一个代码示例将不胜感激。