2011-11-15 77 views
2

我有一個IBAction,通過我的iPad應用程序中的按鈕調用。RestKit ActivityIndi​​cator幾個請求

IBaction調用三種不同的方法來啓動一個RestKit請求。

什麼是最好的方式來檢查所有三個請求的對象檢索?

目標是顯示帶有第一個請求的activityIndi​​cator,並通過檢索所有三個請求的對象來停止/隱藏activityIndi​​cator。

我是RestKit的新手,所以請原諒我,如果這是一個太簡單的問題。我試圖在RestKit API的幫助下自己找到解決方案 - 文檔。

回答

4

我想你使用異步請求。一個簡單的解決方案可以是在您的RKObjectLoderDelegate- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects方法中檢查您的所有數據是否已經加載。

當啓動RestKit請求時,您可以在請求中添加一個'標記'(在RestKit中稱爲userData),並稍後在委託回調中檢索該標記。

例如,您可以實現以下邏輯:

當您創建您的要求,特定的用戶數據添加到每一個:

RKObjectLoader *loader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getMyData" objectMapping:mapping delegate:self];  
[loader setUserData:@"FirstRequest"]; 
... 
RKObjectLoader *loader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/getMyData" objectMapping:mapping delegate:self];  
[loader setUserData:@"ThirdRequest"]; 

,檢查標籤didLoadObjects:

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 
    if ([[objectLoader userData] isEqual:@"FirstRequest"]) { 
     self.firstRequestData = objects; 
    } 
    ... //handle the remaining requests 
    if (self.firstRequestData && self.secondRequestData && self.thirdRequestData) { 
     [self hideMyActivityIndicator]; 
    } 
} 

加載請求時不要忘記處理錯誤情況。

或者,如果這種方法不適合您的方案 - 您可以添加和管理請求在一個單獨的隊列&跟蹤進度。如果您需要第二個選項的更多信息,請告訴我。

+1

嗨mja,你的提示與「標籤」(userData)完全符合我現有的代碼。感謝您的幫助! – MadMaxAPP

1

有一個簡單的方法,在你的objectLoader委託,您可以使用objectLoader的內置功能是這樣的:

- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects { 

    if ([objectLoader wasSentToResourcePath:@"/path1"]) { 
     //handle request for /path1 
     //objects are loaded for request1   

    } else if ([objectLoader wasSentToResourcePath:@"/path2"]){ 
     //handle request for /path2 
     //objects are loaded for request2  

    } else if ([objectLoader wasSentToResourcePath:@"/path3"]){ 
     //handle request for /path3 
     //objects are loaded for request3  

    } 
} 

它只是簡單。

相關問題