-3

我有 xml http://weather.yahooapis.com/forecastrss?w=20070458&u=c,我希望当 xml 更新时,我的数据也会更新。

谢谢。

4

4 回答 4

1

如您所见,此 XML 有ttl节点,它告诉生存时间是 60 秒。因此,您可以定期(每分钟一次,根据TTL值)检查此 URL 并保持最新状态。

于 2012-07-12T12:59:24.390 回答
0

阅读本教程以获取xmlparserNSXMLParser 类参考。我想这会对你有所帮助。

于 2012-07-12T13:01:58.123 回答
0

你可以对它进行投票。

static void timerHandler(CFRunLoopTimerRef timer, void *info)
{
    //request the xml here and compare it with the previous one
}

- (void)weatherMonitor
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    CFRunLoopTimerContext context = {0, self, NULL, NULL, NULL};
    CFRunLoopTimerRef timer = CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent(), 1, 0, 0, timerHandler, &context);//use your own time interval
    CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopDefaultMode);
    CFRelease(timer);
    CFRunLoopRun();
    [pool drain];
}

在后台线程中运行 weatherMonitor。

于 2012-07-12T13:02:01.243 回答
0

您有 2 个选项:

  1. 实施Easy APNS,它将通知您的应用程序任何更改。您可以直接在通知消息中传递 xml 数据,或者您可以在收到通知后立即发起请求以提取 xml。
  2. 在您的应用程序中设置一个计时器,该计时器将启动请求以每 1-10-60 分钟检查一次 xml 更新,无论如何。

两者各有利弊,取决于你的要求和能力。有一点很清楚:除了实现推送通知之外,您无法在不发送请求的情况下从外部接收数据。即使应用程序没有运行,实施Easy APNS也会为您的应用程序提供数据。另一方面,使用计时器将是最快/最简单的方法。你决定。干杯!

于 2012-07-12T13:31:00.117 回答