我需要以规则的间隔异步解析XML,以便当用户使用“PullToReload”重新加载UITableView时,它会加载更新的值。我的赌注是使用NSTimer ......
我已经有一个使用TBXML的XML Parser:
- (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解析,不会使应用程序崩溃。我还需要它在另一个线程中,因此当用户导航到UI时它不会阻止MainThread。
提前致谢, dfox
答案 0 :(得分:0)
我不是iOS专家,但是这个问题在任何GUI框架中都很常见,通常通过使用后台或工作线程执行耗时的任务来解决,让主GUI线程处理用户交互。 / p>
您的解决方案应如下:
在线程上查看此Apple Documentation,了解在iOS下实现此功能的信息。