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

问题描述 投票:0回答:2

我正在编写一个客户端应用程序,调用 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?如果是这样我该怎么
    approach/implement
    呢?
ios objective-c asynchronous callback
2个回答
1
投票

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

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

0
投票

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

stopAnimating
方法。

© www.soinside.com 2019 - 2024. All rights reserved.