【问题标题】:Callback response from ControllerB to ControllerA从控制器到控制器的回调响应
【发布时间】:2016-08-31 04:39:51
【问题描述】:

我需要为我的一个项目制作 SDK,我需要做的是制作一个搜索类,它会返回来自 Web API 的响应,

我正在寻找这样的东西。

SearchController * sc = [[SearchController alloc] initWithSearchText:@"google"];

每次更改textField文本时都会调用此方法,并且我得到的响应应该是块状的。

任何帮助和参考将不胜感激。

【问题讨论】:

  • 您只需要回调函数或整个函数与您的功能?请描述更多
  • 我需要孔功能,

标签: objective-c iphone objective-c-blocks


【解决方案1】:

SearchController.h

typedef void (^SearchHandler)(id results,NSError *error);

@interface SearchController : NSObject
{
    SearchHandler searchBlock;
}
-(void)searchWithText:(NSString *)strText Results:(SearchHandler)searchResult;

SearchController.m

-(void)searchWithText:(NSString *)strText Results:(SearchHandler)searchResult
{
    searchBlock = [searchResult copy];

    //call api for text search
}

-(void)getResponseOfApi
{
    //code where get api response
    searchBlock(apiResonse,apiError);
}

使用块调用 SearchController api

SearchController * sc = [[SearchController alloc] init];
    [sc searchWithText:@"google" Results:^(id results, NSError *error) {
        //block with api response
    }];

【讨论】:

    【解决方案2】:

    您可以在SearchController 中创建一个阻止方法并获得所需类型的响应。

    -(void)executeSearchRequestWithHandler:(void (^)(BOOL result))completionHandler {
         //Do your api calling and than handle completionHandler
         completionHandler(YES);
         //You can set completionHandler type that you want like NSArray,NSString,NSDictionary etc
    }
    

    现在像这样调用这个方法。

    [sc executeSearchRequestWithHandler:^(BOOL result) {
        if (result) {
    
        }
    }];
    

    注意:这里我创建了带有BOOL参数的块,你可以从NSArray,NSDictionary,NSString等响应中设置你想要的参数类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 2013-09-20
      相关资源
      最近更新 更多