iOS:如何为返回相同 result/error 集的两个 API 回调实现共享方法

iOS: how to implement a shared method for two API callbacks returning the same result/error set

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

方法定义如下:

//Current implementation

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

        if (error) {
            return;
        }
        else{
            [self.activityIndicator stopAnimating];
        }
 }];

我希望能够将回调块定义为我可以调用的单独函数,因此每当我调用 API 作为客户端传递不同的参数(例如按名称、按年龄)时,我都可以通过相同的 block/method 来处理结果并避免执行两次。

//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];   
 }];

你只是从一个块中调用一个方法,这很好,没有什么特别的。您已经从块中调用了 stopAnimating 方法。

是的,您可以将块分配给一个变量并将该变量传递给每个方法。

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];