1

对于我意识到这可能是一个非常简单的问题,我深表歉意——我对编程很陌生,对你们中的大多数人来说可能非常简单,我已经为此苦苦挣扎了很长一段时间。

本质上,我一直在开发一个简单的天气应用程序,它从 Google 天气 API 中获取信息。设置 API 后,您只需将城镇名称或邮政编码附加到 URL 的末尾即可。

query = @"toronto,on";

CXMLDocument *parser = [[[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com/ig/api?weather=%@", query]] options:0 error:nil] autorelease];

如您所见,通过更改值“查询”,我可以控制获取天气的城镇或城市。该应用程序的其余部分运行良好 - 显示天气数据并且大部分情况下是可靠的。但是,它只显示我在应用程序中编码的任何城市的天气,使其对除我所在城市的居民之外的任何人都无用。

我的问题是首先提示用户输入他们的位置,然后获取该位置并使其等于“查询”字符串的最简单方法是什么。

正如我所说,这可能是一个非常简单的问题,但是对于一般的编程来说,我已经为此苦苦挣扎了很长一段时间。我很乐意通过 PayPal 给一个完全回答我的问题的回复支付几美元。

如果您需要更多信息来更好地回答问题,请随时提出,我很乐意提供。

再次感谢!

4

2 回答 2

2

我建议使用定位服务,这样您的用户根本不需要输入他/她的位置。看看这里:了解定位服务

在这篇SO 文章中,您将找到一个单例类,它应该为您提供当前位置。为了使用这个类,我会在你的主控制器中这样做(或者当你想更新你的位置时):

 ...
 CLLocation *myLocation = [[LocationManager sharedInstance] currentLocation];
 if ([[LocationManager sharedInstance] locationKnown]) {
      [self updateWeatherInfo];
 } else {
      [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(checkLocation:) userInfo:nil repeats:YES];
 }
 ...

提供一个实现checkLocation

- (void)checkLocation:(NSTimer*)theTimer {
     if ([[LocationManager sharedInstance] locationKnown) {
          [theTimer invalidate];
          [self updateWeatherInfo];
     }
}

updateWeatherInfo您提供的从服务器检索新天气预报的方法在哪里。在该方法中,您可以使用下面示例中的代码将您的 currentLocation 转换为城市名称。

这是来自 Apple 的完整示例,展示了如何从您的位置获取您当前的地址(国家、城市或街道)。

几乎所有你需要的,我想。

于 2011-07-07T21:01:21.297 回答
0

最简单的方法是在 UITextField 中提示用户输入他们的 6 位邮政编码,并在查询中使用该文本。只需确保它是 6 位数字,并且事先只有数字。

如果你正在为这样的事情苦苦挣扎,我强烈建议你观看 iTunes U 上提供的斯坦福 iOS 课程。前几门课程将向你展示你可能想要开发的大部分内容。

于 2011-07-07T21:03:47.453 回答