2014-03-05 72 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]; 
     } 
} 
};`