У меня есть приложение, которое получает данные через XML-файлы.Во время синтаксического анализа данные записываются / вставляются в локальную базу данных sqlite3 на устройстве.Таким образом, если данные синхронизированы, появляется экран загрузки (выполняется в фоновом режиме), который сообщает пользователю, что данные синхронизированы.
Это работает очень хорошо с помощью следующего кода:
Часть экрана загрузки:
[self.view performSelectorInBackground:@selector(addSubview:) withObject:self.updateView];
[self.view performSelectorInBackground:@selector(bringSubviewToFront:) withObject:self.updateView];
for (NSURL *url in urlArray)
{
// Set up a UILabel so the user can see which data is syncronized
[self.updateLabel performSelectorInBackground:@selector(setText:) withObject:[NSString stringWithFormat:@"%@",url]];
// Parsing part
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
// Setting the database-manager as delegate
[xmlParser setDelegate:self.datencontroller];
[xmlParser parse];
[xmlParser release];
[url release];
}
[self.updateView removeFromSuperview];
Теперь у меня возникла следующая проблема: очевидно, парсинг блокирует работающее приложение.Поскольку я хочу реализовать метод cancel, чтобы пользователь мог прервать синхронизацию, у меня возникла проблема.
Никаких действий не замечено, пока часть синтаксического анализа не будет выполнена / завершена.Так что реализовать кнопку, вызывающую метод cancel, совершенно бесполезно, если приложение не замечает нажатие кнопки.
Я пробовал несколько способов выполнения в фоновом режиме и т. Д., Но у меня возникла проблемаменеджер данных хранит данные в одной базе данных.Таким образом, нет способа получить к нему доступ одновременно двумя различными способами и вставить данные.
Может кто-нибудь из вас помочь мне в этом?Заранее спасибо.