Мне нужно выполнить запрос 7 параллельно, и мне нужно запустить панель прогресса, ответ на этот запрос 7 будет содержать более 1000 записей, а также один флаг будет присутствовать в каждый ответ, чтобы указать, нужно ли мне снова инициировать тот же запрос, чтобы получить остальные данные.Инициировать Множественный запрос и обрабатывать ответы путем сохранения в базу данных в iOS
Параллельно мне нужно сохранить эти записи в базе данных. После сохранения каждой записи мне нужно остановить индикатор выполнения.
Может кто-нибудь, пожалуйста, дайте мне знать, как выполнять эти операции асинхронно.
Ниже приведены шаги, мне нужно выполнить асинхронном
Шаг 1: Запустить Progressbar для только первый запрос.
Шаг 2: Запустите инициирующий запрос.
Шаг 3: Проверить флаг из каждого ответа, iF 'Y' снова инициировать тот же запрос и сохранить извлеченные данные в БД. . ЕСЛИ «N» сохранить неправдоподобные данные в БД (БД не должен блокировать)
Шаг 4: Повторите шаг 3 Шифрование до каждого ответа завершено с флагом «N»
Шаг 5: После того, как каждый ответ получил от сервера и хранящиеся в Databse, необходимо остановить Progressbar.
Ниже приводится селектор я использовал, чтобы инициировали этот запрос каждый раз,
-(void)requestResponseHandling
{
[NSURLConnection sendAsynchronousRequest:targetrequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response,NSData *data, NSError *error)
{
[self doSomethingWithData:data];
[[[MySingleton sharedMySingleton]progressView]removeFromSuperview];
}];
[self performSelectorOnMainThread:@selector(pageLoaded:)
withObject:nil
waitUntilDone:YES];
}
Ниже приводится селектор я использовал, чтобы проверить флаг и сохранить в БД,
-(void)doSomethingWithData :(NSData*)data //:(NSString*)MD
{
Webservice_Response=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSError *parseError = nil;
xmlDictionary = [self dictionaryForXMLString:Webservice_Response error:&parseError];
NSDictionary *table_dict=[[xmlDictionary valueForKey:@"Response"]valueForKey:@"data"];
NSArray *table_Name=[table_dict allKeys]; //check here
NSString *DataExistsflg;
NSArray *tran_status;
if([table_Name containsObject:@"table1"])
{
tran_status= [table_dict forKey:@"table1"];
}
else if([table_Name containsObject:@"table3"])
{
tran_status= [table_dict forKey:@"table4"];
}
//Similarly for all tables i ill check here
DataExistsflg=[[[tran_status objectAtIndex:0]valueForKey:@"DATAEXISTS"]valueForKey:@"text"];
[self DataExists :DataExistsflg:moduleID];
dbwrraperOBJ = [FMDatabase databaseWithPath];
[dbwrraperOBJ open];
[self WebserviceResponse:xmlDictionary]; //Save the server resposponse to Database
[dbwrraperOBJ close];
}
Я знаю, что индикатор выполнения будет останавливаться после каждого ответа, полученного до сохранения в базе данных. Но мое требование состоит в том, чтобы остановить прогресс после каждого шага.
Спасибо за ваш ответ. Это помогло устранить проблему – user7413163