如何将NSTimer与来自NSURL的数据一起传递给TableView中的NSXMLParser显示

时间:2012-08-17 07:15:52

标签: tableview nstimer nsxmlparser nsurl

如何将NSTimer与来自NSURL传递的数据一起使用到TableView中的NSXMLParser显示

我有来自Web服务器的应用程序显示数据由PHP gen'到XML

在我的xcode中,我使用NSURL连接到PHP文件(在Web服务器中) 并使用NSXMLParser读取XML数据将值放入数组 并最终显示在TableView

我希望看到TableView实时更新中的数据或每x次更新一次

我想我可以使用NSTimer,但我不知道我怎么做 我可以将NSTimer放入xcode中的代码

1 个答案:

答案 0 :(得分:0)

简而言之,如:

// Schedule a timer repeating every 2 seconds
[NSTimer scheduledTimerWithTimeInterval:2.0
                                 target:self.tableView
                               selector:@selector(reloadData)
                               userInfo:nil
                                repeats:YES];

更长的版本:

您需要从计时器调用-doParse,获取数据,解析并重新加载数据。

为了不阻止主线程,您必须 NOT 从主线程中调用[[NSXMLParser alloc] initWithContentsOfURL:theURL]

相反:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
      NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithContentsOfURL:theURL];
      ...
      // finish parsing
      dispatch_async(dispatch_get_main_queue(), ^{
          [tableView reloadData];
      });
});

使用来自-viewDidLoad的NSTimer调用-doParse

[NSTimer scheduledTimerWithTimeInterval:2.0
                                 target:self
                               selector:@selector(doParse)
                               userInfo:nil
                                repeats:YES];

进一步阅读: WWDC 2012 Session 211 - 在iOS上构建并发用户界面。