我環顧四周,似乎找不到適合我的問題的正確答案。截至目前,我擁有一個網絡引擎,並將其從每個視圖控制器委派給其執行我的網絡活動。遇到多個NSURLConnection問題
例如,要獲得用戶的詳細信息我有一個這樣的方法:
- (void) getUserDetailsWithUserId:(NSString*) userId
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@Details", kServerAddress]]];
request.HTTPMethod = @"POST";
NSString *stringData = [NSString stringWithFormat:@"%@%@", kUserId, userId];
NSData *requestBodyData = [stringData dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = requestBodyData;
NSURLConnection *conn = [[NSURLConnection alloc] init];
[conn setTag:kGetUserInfoConnection];
(void)[conn initWithRequest:request delegate:self];
}
當我得到connectionDidFinishLoading
數據,我收到一個NSDictionary
的數據,並根據我設置的標籤爲了連接,我將數據傳輸到所需的NSDictionary
。
這工作正常。但是現在我需要兩個來自同一視圖控制器的請求。所以當我這樣做的時候,數據越來越混亂。假設我有一個正在執行搜索的連接,當我執行搜索時,來自用戶詳細信息的數據可能會出現。根據我在connectionDidFinishLoading
內部進行的切換,數據未被分配到正確的NSDictionary
。我爲整個網絡引擎使用了一個代理。
我是新來的NSURLConnection
,我應該設置一個隊列還是什麼?請幫忙。
編輯
這裏的一部分,我在connectionDidFinishLoading
接收數據:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if ([connection.tag integerValue] == kGetUserDetails)
networkDataSource.userData = self.jsonDetails;
if ([connection.tag integerValue] == kSearchConnection)
networkDataSource.searchData = self.jsonDetails;
}
並在此之後我有一個要求所需的視圖控制器所需的委託的開關情況。
這聽起來像個好主意。我會給你一個鏡頭。 – Anil
好的,如有任何問題,請告知我。 –
我也一樣。但是當我發送請求時,比如說我在下載用戶詳細信息時(比如網速很慢)進行搜索,則用戶詳細信息調用不會繼續。只有搜索發生。 – Anil