Я много огляделся и не могу найти правильный ответ на свои проблемы. На данный момент у меня есть сетевой движок, и я делегирую его с каждого из контроллеров представления для выполнения моей сетевой активности.Проблемы с несколькими 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
.
Это прекрасно работает. Но теперь мне требуется два запроса, идущих от одного и того же контроллера. Поэтому, когда я это делаю, данные смешиваются. Скажем, у меня есть соединение для поиска, и данные из деталей пользователя могут появиться, когда я выполняю поиск. Данные не назначаются справа NSDictionary
на основе переключателя, который я делаю внутри connectionDidFinishLoading
. Я использую один делегат для всего сетевого движка.
Я новичок в NSURLConnection
, должен ли я настроить очередь или что-то еще? Пожалуйста помоги.
EDIT
Вот та часть, где я получаю данные в 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