好的,所以我认为我已经解决了这个问题,但碰到了另一个......
我获取用户的位置,然后使用他们的坐标来查找他们当前所在的邮政编码,但是当我在块内运行它时,它只会向控制台注销一次。当我尝试在另一种方法中运行块时,它会使用相同的邮政编码大量吐出。
我的问题是,我如何制作它以便块打印一个邮政编码,并且每次启动视图控制器时都会这样做。?
//user's location
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
CLGeocoder *fgeo = [[CLGeocoder alloc] init];
[fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
zip = placemark.postalCode;
NSLog(@"%@", zip);
//[self jsonRequest];
答案 0 :(得分:1)
当我尝试以另一种方法运行该块时,它吐出了大量的 所有时间都使用相同的邮政编码。
一旦它输入了返回语句中的If(!error),那就应该解决问题。
答案 1 :(得分:0)
覆盖viewDidAppear
并将代码放在那里。这被称为视图控制器出现的每个时间。如果您希望在创建视图控制器并且即将显示时仅调用一次,则覆盖viewDidLoad
。
如果您希望它只被调用一次,但特别是在屏幕上显示视图后,您必须检查viewDidAppear
中的某些内容,以指示它是否第一次出现。您可能需要在viewDidLoad
或init
中设置一个标记,然后在第一次调用viewDidAppear
时取消设置。