从服务器请求信息的方法中的完成处理程序
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);
}];
注意:不清楚您的完成处理程序参数的含义,所以我可能有些冒昧。
我有一个向服务器发送请求的方法,我已经使用 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);
}];
注意:不清楚您的完成处理程序参数的含义,所以我可能有些冒昧。