【发布时间】:2011-11-30 08:17:10
【问题描述】:
我需要定期异步解析 XML,以便当用户使用“PullToReload”重新加载 UITableView 时,它会加载更新的值。我的赌注是使用 NSTimer...
我已经有一个使用 TBXML 的 XML 解析器:
- (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 时,需要向 UINavigationController 推送一个新的 UITableView,并根据选中的单元格值取数据;由于在解析期间 NSManagedContext 为空(直到它被填充),应用程序由于“无效谓词:nil RHS”而崩溃。
我的代码现在变得非常大,所以我不能把它贴在这里,但请告诉我你需要查看代码的哪一部分,我会放在这里。
基本上,我只需要定期在后台进行 XML 解析,不会导致应用程序崩溃。我还需要它在另一个线程中,这样它就不会在用户导航到 UI 时阻塞 MainThread。
提前致谢, 狐狸
【问题讨论】:
标签: ios uitableview core-data xml-parsing