【问题标题】:completion handler in method which request information from server从服务器请求信息的方法中的完成处理程序
【发布时间】:2015-05-11 12:52:06
【问题描述】:

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

    };

我的问题是在获取数据后如何将完成处理程序返回给我的函数。

谢谢,。

【问题讨论】:

    标签: ios objective-c callback objective-c-blocks


    【解决方案1】:

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

    注意:尚不清楚您的完成处理程序参数的含义,因此我可能会冒昧。

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 2019-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多