iOS:如何为返回相同结果/错误集的两个API回调实现共享方法

iOS:如何为返回相同结果/错误集的两个API回调实现共享方法,ios,objective-c,api,asynchronous,callback,Ios,Objective C,Api,Asynchronous,Callback,我正在编写一个客户端应用程序调用API,并在回调方法中处理结果 该方法定义如下: //Current implementation [_myAPIInterface dataByName:name withCallback:^(NSError *error, NSDictionary *result) { //Method body.. processing the results if (error) { return;

我正在编写一个客户端应用程序调用API,并在回调方法中处理结果

该方法定义如下:

//Current implementation

[_myAPIInterface dataByName:name withCallback:^(NSError *error, NSDictionary *result) {
        //Method body.. processing the results

        if (error) {
            return;
        }
        else{
            [self.activityIndicator stopAnimating];
        }
 }];
我希望能够将回调块定义为一个单独的函数,我可以调用该函数,这样每当我作为传递不同参数(例如,按名称、按年龄)的客户端调用API时,我都可以传递相同的块/方法来处理结果,并避免实现两次

//Desired implementation/approach
[_myAPIInterface dataByName:name withCallback:^(NSError *error, NSDictionary *result) {
      [self sharedMethod:error :results];   
 }];

[_myAPIInterface dataByAge:age withCallback:^(NSError *error, NSDictionary *result) {
      [self sharedMethod:error :results];   
 }];
  • 所期望的实现是否可能
  • 是否可以定义在回调块中调用的sharedMethod?如果是这样的话,我应该如何处理/实施它

    • 您只是从一个块中调用一个方法,这很好,它没有什么特别之处。您已经在从块调用
      停止动画制作
      方法。

      是的,您可以将块指定给变量,并将该变量传递给每个方法

      void (^callback)(NSError *, NSDictionary *) = ^(NSError *error, NSDictionary *result) {
          //Method body.. processing the results
      
          if (error) {
              return;
          }
          else {
              [self.activityIndicator stopAnimating];
          }
      };
      
      [_myAPIInterface dataByName:name withCallback:callback];
      [_myAPIInterface dataByAge:age withCallback:callback];
      

      我不太明白你的问题。您是API客户端还是提供者?你说的“回收”这个街区是什么意思?你是说街区的类型吗?关于你的
      sharedMethod
      :当然,为什么不能声明/实现这个方法呢?请告诉我们您面临的具体问题……顺便说一句,使用未命名的方法参数(如在您的
      sharedMethod
      中)不是一个好做法。谢谢!我已经修改了这个问题。。现在更清楚了吗?…事实上,我正在做更多的事情,但我简化了它,使它变得如此友好。我通过处理作为字典获得的JSON结果集来更改几个UI元素中的文本/描述值。这与您所做的工作没有任何区别。