我有一个向服务器发送请求的方法,我用completionHandler创建了对该函数的调用,如下所示:
-(void)sendAddSubscriptionRequest:(NSString*)owner withComppletionHandler:(void (^)(BOOL, NSArray *, NSError *))completion
dataWebService = [[NSMutableData alloc] init];
NSURL* aUrl = [NSURL
URLWithString:[NSString stringWithFormat:@"https://www.google.com/add?"]];
NSMutableURLRequest* request =
[NSMutableURLRequest requestWithURL:aUrl
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
[request addValue:[NSString stringWithFormat:@"Bearer %@", "token"]
forHTTPHeaderField:@"Authorization"];
[request setHTTPMethod:@"POST"];
NSString* postData =
[[NSString alloc] initWithFormat:@"owner=%@",
owner];
[request setHTTPBody:[postData dataUsingEncoding:NSUTF8StringEncoding]];
NSData* returnData = [NSURLConnection sendAsynchronousRequest:request queue:nil completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
};
我的问题是如何在获取数据后将完成处理程序返回给我的函数。
谢谢,
答案 0 :(得分:0)
当您发送异步请求时,该方法将立即返回,因为数据将在NSURLConnection
完成处理程序中“返回”。然后,您可以在那里对其进行解码并将其传递给您自己的完成处理程序:
[NSURLConnection sendAsynchronousRequest:request
queue:nil
completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSArray *array = nil;
if (!connectionError)
array = /* get from data somehow */
completion(!connectionError, array, connectionError);
}];
注意:目前尚不清楚完成处理程序参数的含义,所以我可能已经采取了一些自由。