我有 xml http://weather.yahooapis.com/forecastrss?w=20070458&u=c,我希望当 xml 更新时,我的数据也会更新。
谢谢。
我有 xml http://weather.yahooapis.com/forecastrss?w=20070458&u=c,我希望当 xml 更新时,我的数据也会更新。
谢谢。
如您所见,此 XML 有ttl
节点,它告诉生存时间是 60 秒。因此,您可以定期(每分钟一次,根据TTL值)检查此 URL 并保持最新状态。
阅读本教程以获取xmlparser和NSXMLParser 类参考。我想这会对你有所帮助。
你可以对它进行投票。
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。
您有 2 个选项:
两者各有利弊,取决于你的要求和能力。有一点很清楚:除了实现推送通知之外,您无法在不发送请求的情况下从外部接收数据。即使应用程序没有运行,实施Easy APNS也会为您的应用程序提供数据。另一方面,使用计时器将是最快/最简单的方法。你决定。干杯!