2012-03-09 40 views
0

我使用ASIHTTPRequest使一個隊列請求,但我想知道,如果有知道當隊列已經完成了所有的請求的方式這裏是我的代碼部分NSOperationQueue完成

for (int i=0; i< [result count]; i++) 
{ 
    Reportes *temp = [result objectAtIndex:i]; 
    ASIFormDataRequest *request  = [ASIFormDataRequest requestWithURL:url]; 

    [request setTag:0]; 
    [request setDelegate:self]; 
    [request setPostValue:[[NSUserDefaults standardUserDefaults] stringForKey:USERNAME] forKey:POST_USUARIO]; 
    [request setPostValue:[KeychainWrapper keychainStringFromMatchingIdentifier:PIN_SAVED] forKey:POST_CLAVE]; 
    [request setPostValue:POST_IDSISTEMA_VALUE forKey:POST_IDSISTEMA]; 
    [request setPostValue:[self getMacAddress] forKey:POST_MAC]; 

    [request setPostValue:[[temp toNSDictionary] JSONRepresentation] forKey:@"value"]; 
    [[self queue] addOperation:request]; 

} 

回答

2

你可以實現以下方法

- (void)queueFinished:(ASINetworkQueue *)queue 
{ 
    // You could release the queue here if you wanted 
    if ([[self networkQueue] requestsCount] == 0) { 
     [self setNetworkQueue:nil]; 
    } 
    NSLog(@"Queue finished"); 
} 

queueFinished是所有的請求都完成之後被調用的一個。爲了使這個工作,你必須調用

[[self queue] setQueueDidFinishSelector:@selector(queueFinished:)]; 

在初始化隊列

+1

當然,你還可以設置隊列'委託[自隊列] setDelegate:自我]' – Daniel 2012-03-09 17:56:24

+0

這是ASIHTTPRequest_上的這個methond setQueueDidFinishSelector嗎?我找不到它 – Alex 2012-03-09 18:05:08

+0

是的。你可能使用'NSOperationQueue',但你可以使用'ASINetworkQueue'。它是第一個的子類,它有我告訴過你的選擇器。它還可以讓你檢查整個過程的進度。您將所有請求添加到它,然後調用'[queue go]'。當完成所有的請求,你會得到你想要的電話 – Daniel 2012-03-09 18:08:50

相關問題