来自新手iPhone程序员的简单问题

时间:2011-07-07 20:56:19

标签: iphone objective-c weather

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

基本上,我一直在研究一个简单的天气应用程序,该应用程序从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给一些回复完全回答我的问题。

如果您需要更多信息以更好地回答这个问题,请不要犹豫,我很乐意提供。

再次感谢!

2 个答案:

答案 0 :(得分:2)

我建议使用位置服务,因此您的用户根本不需要输入他/她的位置。看看这里:Understanding Location Services

在这个S.O. article中,您会找到一个单例类,它应该为您提供当前位置。为了使用这个课程,我会在您的主控制器中(或当您想要更新您的位置时)这样做:

 ...
 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的

This is a full sample显示如何从您所在的位置获取您当前的地址(国家/地区,城市或街道)。

我认为,几乎所有你需要的东西。

答案 1 :(得分:0)

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

如果您正在努力解决这类问题,我强烈建议您在iTunes U上观看Stanford iOS课程。前几个课程将向您展示您可能想要开发的内容。