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];
}];
- 是否可以实现所需的实现?
- 是否可以定义在回调块中调用的 sharedMethod?如果是我应该怎么
approach/implement
呢?
你只是从一个块中调用一个方法,这很好,没有什么特别的。您已经从块中调用了 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];
我正在编写一个 客户端应用程序 调用一个 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];
}];
- 是否可以实现所需的实现?
- 是否可以定义在回调块中调用的 sharedMethod?如果是我应该怎么
approach/implement
呢?
你只是从一个块中调用一个方法,这很好,没有什么特别的。您已经从块中调用了 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];