我在代码中使用AFNetworking
连接到API。现在,我在视图控制器上有了一些通用的东西,比如开关和选择器视图,它们将决定发送到API的内容。所以我需要这样调用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调用。
感谢
我可以这样做,创建一个可以为您返回值的方法:
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];
}
}
};`