Мне нужно асинхронно анализировать XML через регулярные промежутки времени, чтобы, когда пользователь перезагружал UITableView с помощью PullToReload, он загружал обновленные значения. Моя ставка использует NSTimer ...
У меня уже есть парсер XML, использующий TBXML:
- (void) xmlParserWrapper
{
...
TBXMLParser *xmlParser = [[TBXMLParser alloc] initWithContext:context];
[xmlParser performSelectorInBackground:@selector(parseXMLFileAtURL:) withObject:xmlUrl];
}
Итак, я попытался использовать NSTimer
{
...
[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(xmlParserWrapper) userInfo:nil repeats:YES];
}
Это прекрасно работает, если пользователь не будет касаться GUI при разборе. Но когда пользователь щелкает UITableViewCell, ему необходимо отправить новый UITableView в UINavigationController и извлечь данные на основе выбранного значения ячейки; так как NSManagedContext пуст во время синтаксического анализа (пока он не заполнен), приложение зависло из-за 'Неверный предикат: nil RHS'.
Мой код становится очень большим, поэтому я не могу вставить его сюда, но, пожалуйста, дайте мне знать, какую часть кодов вам нужно увидеть, и я добавлю его сюда.
По сути, мне просто нужно регулярно выполнять синтаксический анализ XML в фоновом режиме, который не приведет к сбою приложения. Мне также нужно, чтобы он был в другом потоке, чтобы он не блокировал MainThread при переходе пользователя к пользовательскому интерфейсу.
Заранее спасибо,
dfox