2014-03-05 39 views
0

我使用AFNetworking连接到API在我的代码。 现在我在视图控制器上有一些常规的东西,比如开关和拾取器视图,它们将决定发送到API的内容。 所以我需要调用AFNetworking块这样的:IOS块AFNetworking

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:returncompletedURL]; 
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    operation.responseSerializer = [AFJSONResponseSerializer serializer]; 
    operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 

,并在我使用[operation start]运行结束块,很容易!

但我需要这在某种方法/功能的,这样我可以调用它,把参数传递过去,将它作为和当开关被改变或标签被改变。而不是一遍又一遍地写同一个块,我希望它作为一个函数。

我会用[operation start]的功能来检查开关是否打开/关闭,但它并没有看到它的功能中。

如果我环绕AFNetworking块的方法会那么糟糕,我不能一个块中使用return语句。如果我有开关和标签,如果用户更改任何这则需要被称为直接修改API调用的方式块需要

一般建议。

感谢

+0

所以,基本上你想封装在一个方法块,然后调用它在一些用户操作,例如更换开关或标签。这是你的意思吗? – GoGreen

+0

如果我没有理解好,你似乎只需要添加IBOutlets到您的视图控制器引用那些对你的URL建设进程产生影响,而当你要解雇你的API请求的所有UI控件,只需使用这些IBOutlet中引用捕捉所有要求值并建立您的网址。但是,也许你的问题是关于别的吗?... – Romain

+0

GoGreen多数民众赞成在正确的,因为有一些不同的开关等影响API,并在编程流程中的按钮可能会在API运行后按下,因此它不会准确。所以如果一个开关被按到1或0或者下拉框被改变了,那么API调用需要被运行。 – user3328028

回答

0

我可以做这样的事情,创建一个可以返回给你一个方法的价值:

Method that you could insert your request. 

-(void)callRequestWithParameter:(id)parameter returnState:(void(^)(id response))response{ 
    // here make request 
    // use parameter to send what you want on request 
    if (requestSucess){ 
     response(data for return our status); 
    } 
}; 

//Method for handle request and answer 
-(void)requestData:(id)dataParameter { 
[ClassName callRequestWithParameter:@(2) returnState: (id response)^{ 
     if(response){ 
     // call some update method like 
     [self updateItensWithData:data]; 
     } 
} 
};`