Ios web服务完成后的完成块?

Ios web服务完成后的完成块?,ios,objective-c,rest,Ios,Objective C,Rest,我在一个名为WebServices的类中实现了RESTful API。我从应用程序中的其他类调用此类中的方法,并希望在成功完成web服务后执行操作。我的方法头中有一个完成块,但我不确定是否正确使用了它们,因为应用程序似乎从未到达方法调用的完成部分。这就是我调用方法的方式: [services callUnregisterForPushNotifications:savedAccessToken pushToken:savedPushToken completionBlock:^(NSMuta

我在一个名为WebServices的类中实现了RESTful API。我从应用程序中的其他类调用此类中的方法,并希望在成功完成web服务后执行操作。我的方法头中有一个完成块,但我不确定是否正确使用了它们,因为应用程序似乎从未到达方法调用的完成部分。这就是我调用方法的方式:

  [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);