Ios web服务完成后的完成块?
我在一个名为WebServices的类中实现了RESTful API。我从应用程序中的其他类调用此类中的方法,并希望在成功完成web服务后执行操作。我的方法头中有一个完成块,但我不确定是否正确使用了它们,因为应用程序似乎从未到达方法调用的完成部分。这就是我调用方法的方式:Ios web服务完成后的完成块?,ios,objective-c,rest,Ios,Objective C,Rest,我在一个名为WebServices的类中实现了RESTful API。我从应用程序中的其他类调用此类中的方法,并希望在成功完成web服务后执行操作。我的方法头中有一个完成块,但我不确定是否正确使用了它们,因为应用程序似乎从未到达方法调用的完成部分。这就是我调用方法的方式: [services callUnregisterForPushNotifications:savedAccessToken pushToken:savedPushToken completionBlock:^(NSMuta
[services callUnregisterForPushNotifications:savedAccessToken pushToken:savedPushToken completionBlock:^(NSMutableArray *resultsArray) {
NSLog(@">>> COMPLETE! <<<");
[self.loadingView removeFromSuperview];
}];
[服务CallUnregister ForPushNotifications:savedAccessToken pushToken:savedPushToken completionBlock:^(NSMutableArray*ResultArray){
NSLog(@“>>>COMPLETE!在else块中,您应该这样调用完成处理程序:
// [code omitted for brevity]
NSLog(@"UNREGISTER PUSH RESPONSE: %@", _string);
id obj= [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
if (!obj) {
//NSLog(@"REGISTER PUSH NOTIFICATIONS ERROR: %@", error);
} else {
completionHandler(resultsArray); // add this line to actually call the completion block passed in
//NSLog(@"REGISTER PUSH NOTIFICATIONS DATA: %@", obj);
//self.accessToken = [obj valueForKey:@"access_token"];
//NSLog(@"ACCESS TOKEN: %@",self.accessToken);
}
}];
还要确保传入实际数组,而不是我传入的resultsArray
参数
基本上,您要做的是传入一个不知道何时执行的函数(或“块”)(在任何异步任务完成后,您必须自己执行)。因此,您从调用方法传入了块:
[services callUnregisterForPushNotifications:savedAccessToken pushToken:savedPushToken completionBlock:^(NSMutableArray *resultsArray) {
NSLog(@">>> COMPLETE! <<<");
[self.loadingView removeFromSuperview];
}];
这样,一旦您的请求完成(即else
块),您就可以执行传入的完成块了。这实际上意味着“执行我先前传入的代码块,因为现在我们有了来自网络操作的数据。”哪一部分没有被调用?它不起作用吗?”请注意,NSURLConnection已被弃用。您应该改为使用NSURLSession。
[services callUnregisterForPushNotifications:savedAccessToken pushToken:savedPushToken completionBlock:^(NSMutableArray *resultsArray) {
NSLog(@">>> COMPLETE! <<<");
[self.loadingView removeFromSuperview];
}];
completionHandler(resultsArray);