我有以下问题.. 我用我的所有函数创建了一个 API 类,当 url 请求完成时它们返回结果。
我想在发出请求之前制作一个加载器,并在完成后将其删除。
我的请求代码是这样的:
-(NSDictionary *)makeApiCall:(NSString *)function params:(NSDictionary *)params view:(UIView *)displayView{
__block NSDictionary *json = nil;
[self makeRequestTo:function parameters:params successCallback:^(id jsonResponse) {
json = jsonResponse;
} errorCallback:^(NSError *error, NSString *errorMsg) {
NSLog(@"Error: %@", errorMsg);
}];
return json;
}
- (void) makeRequestTo:(NSString *) function
parameters:(NSDictionary *) params
successCallback:(void (^)(id jsonResponse)) successCallback
errorCallback:(void (^)(NSError * error, NSString *errorMsg)) errorCallback {
NSURLResponse *response = nil;
NSError *error = nil;
AppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate setLoadingEnabled:true]
NSURL *url = [NSURL URLWithString:kBaseUrl];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
httpClient.parameterEncoding = AFFormURLParameterEncoding;
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:[NSString stringWithFormat:@"%@/%@",kApiBaseUrl,function] parameters:params];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
//NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if(error) {
errorCallback(error, nil);
} else {
id JSON = AFJSONDecode(data, &error);
successCallback(JSON);
}
}];
}
但是..这行不通。加载器仅在请求完成后出现,并在一秒钟内被删除。
有趣的是,如果我从这个 Api 类中调用它,它会起作用.. 任何人都可以帮助我吗?
谢谢