2011-07-13 84 views
2

在我的應用我有ViewControllers->業務邏輯層(BLL) - >數據訪問層(DAL) - >(HttpApi)OR(SQLiteApi)ASIHttpRequest從發送異步請求響應回視圖控制器

在我的HttpApi類我使用ASIHttpRequest與異步請求。

請求最初來自ViewController,並一直延伸到上述層。

我希望能夠將異步請求的結果「注入」到鏈中,以便它可以一直返回到ViewController並由途中的中間層進行處理。

我有一種感覺,它是我需要的代表,但我不確定要實施什麼。

編輯: 我想我可能需要開發一個從HTTPAPI一路回到視圖控制器的回調鏈。我需要使用委託。

所以,視圖控制器符合BLL委託和BLL符合DAL代表等..

回答

4

我會在使用時的通知接收的響應

[[NSNotificationCenter defaultCenter] postNotificationName:@"requestFinished" object:request]; 

然後任何的廣播請求的班級可以聽取如下內容:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestFinished:) name:@"requestFinished" object:nil]; 

- (void)requestFinished:(NSNotification*)notification { 
    ASIHTTPRequest *request = (ASIHTTPRequest*)[notification object]; 

    if ([[[request URL] absoluteString] isEqualToString:expectedURL]) { 
     NSString *responseString = [request responseString]; 
     NSLog(@"RESPONSE %@", responseString); 
    } 
} 
+1

我也太喜歡這個要求的通知而不是委託。不要忘記,ASIHTTPRequest允許您使用userInfo字典標記每個請求,這可以很好地跟蹤您收到消息的響應。 – Roger

+0

有疑問.. NSNotification有一個延遲...這是不方便的..任何人都可以指出一個實現HTTP層異步的開源項目,所以我們可以知道什麼是正確的路要走? –