我想你使用異步請求。一個簡單的解決方案可以是在您的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];
}
}
加載請求時不要忘記處理錯誤情況。
或者,如果這種方法不適合您的方案 - 您可以添加和管理請求在一個單獨的隊列&跟蹤進度。如果您需要第二個選項的更多信息,請告訴我。
來源
2011-11-15 15:51:57
mja
嗨mja,你的提示與「標籤」(userData)完全符合我現有的代碼。感謝您的幫助! – MadMaxAPP