我正在尝试遍历大约10个纬度和经度值的数组,并从中获取地址。我使用Xcode创建了一个控制台应用程序,我可以循环文件并检索位置,将它们添加到NSMutableArray
并将其传递给下面的函数。但是,永远不会调用完成处理程序块。我能做错什么?如果您需要在此处查看任何其他代码,请告诉我们。我只是感到沮丧和困惑,并想知道它会是什么。
void nextGeocodeRequest(int start, NSMutableArray * myLocations)
{
@autoreleasepool {
for (int i = start; i < 1; i++) {
[ myLocations objectAtIndex:i ];
double mylong = [[[myLocations objectAtIndex:i] valueForKey:@"Longitude"] doubleValue ];
double mylat = [[[myLocations objectAtIndex:i] valueForKey:@"Latitude"] doubleValue];
goal = [[CLLocation alloc] initWithLatitude: mylat longitude:mylong] ;
CLGeocoder * geocoder = [[CLGeocoder alloc]init];
[geocoder reverseGeocodeLocation:goal completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
if (error == nil && [placemarks count] > 0) {
placemark = [placemarks lastObject];
NSLog(@"this is the state '%@'",placemark.locality);
/*
self.state = [[State alloc] init];
self.state.name = placemark.locality;
self.state.code = placemark.administrativeArea;
self.state.stateId = 1;
self.state.stations = 300;
[self.states addObject:self.state];
*/
//[self.tableView reloadData];
nextGeocodeRequest(i, myLocations);
} else {
NSLog(@"%@", error.debugDescription);
}
}];
} //ends the for
// return 0;
}
}
答案 0 :(得分:1)
您需要run
main
函数末尾的当前NSRunLoop
,以便处理地理编码连接。然后,您需要定义在处理完所有连接后应用程序的终止方式。
[[NSRunLoop currentRunLoop] run];
(将其放在主要功能的自动发布池末尾)
目前,您的应用会执行所有内联处理,准备许多连接,无需处理它们,然后只需退出。