从ControllerB到ControllerA

时间:2016-08-31 04:39:51

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

我需要为我的一个项目制作SDK,我需要做的是创建一个从Web API返回响应的搜索类,

我正在寻找类似的东西。

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

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

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

2 个答案:

答案 0 :(得分:0)

您可以在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参数的块,您可以根据NSArrayNSDictionary,{{1}等响应设置所需的参数类型等等。

答案 1 :(得分:0)

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