我很抱歉我意识到这可能是一个非常简单的问题 - 我对编程非常陌生,对于你们大多数人来说可能非常简单,我已经挣扎了很长一段时间。
基本上,我一直在研究一个简单的天气应用程序,该应用程序从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给一些回复完全回答我的问题。
如果您需要更多信息以更好地回答这个问题,请不要犹豫,我很乐意提供。
再次感谢!
答案 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转换为城市名称。
This is a full sample显示如何从您所在的位置获取您当前的地址(国家/地区,城市或街道)。
我认为,几乎所有你需要的东西。
答案 1 :(得分:0)
最简单的方法是在UITextField中提示用户输入6位数的邮政编码,并在查询中使用该文本。只需确保它是6位数字,只预先确定数字。
如果您正在努力解决这类问题,我强烈建议您在iTunes U上观看Stanford iOS课程。前几个课程将向您展示您可能想要开发的内容。