从服务器请求信息的方法中的完成处理程序

completion handler in method which request information from server

我有一个向服务器发送请求的方法,我已经使用 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) {

    };

我的问题是在获取数据后我应该如何 return 我的函数的完成处理程序。

谢谢,

当您发送异步请求时,该方法将立即 return 因为数据将 "returned" 在 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);
}];

注意:不清楚您的完成处理程序参数的含义,所以我可能有些冒昧。