Ios 仅以英语获取CLGeocoder值

Ios 仅以英语获取CLGeocoder值,ios,objective-c,geolocation,Ios,Objective C,Geolocation,我如何才能从CLGeocoder获得所有的值(国家、城市(重要)和通道),并且只使用英语,而忽略设备的语言 我的代码: -(void)updateLocations { // Create a location manager locationManager = [[CLLocationManager alloc] init]; // Set a delegate to receive location callbacks locationManager.dele

我如何才能从CLGeocoder获得所有的值(国家、城市(重要)和通道),并且只使用英语,而忽略设备的语言

我的代码:

-(void)updateLocations
{
    // Create a location manager
    locationManager = [[CLLocationManager alloc] init];
    // Set a delegate to receive location callbacks
    locationManager.delegate = self;
    // Start the location manager
    [locationManager startUpdatingLocation];

    //    [self.locationManager requestWhenInUseAuthorization];
    [locationManager requestAlwaysAuthorization];
}


-(void)updateLocationManager : (CLLocationManager *)manager
{
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error)
     {
         if(placemarks && placemarks.count > 0)
         {
             CLPlacemark *placemark = [placemarks objectAtIndex:0];

             NSString *country = placemark.country;

             // Getting the City
             NSString *city = placemark.addressDictionary[@"City"];

             NSString *thoroughfare = [placemark thoroughfare];

         }

         else
         {
             NSLog(@"Geocode failed with error: %@", error);
             return;
         }
     }];
}

在查询位置之前,请尝试更改
AppleLanguages
键的
NSUserDefaults

NSArray *currentLanguageArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

 //get the location

[[NSUserDefaults standardUserDefaults] setObject:currentLanguageArray forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

它对我很有用,但您必须添加如下代码:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

CLLocation *currentLocation = newLocation;

if (currentLocation != nil) {
    NSLog(@"lon - %@", [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude]);
    NSLog(@"lat - %@",  [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude]);
}

// Reverse Geocoding
NSLog(@"Resolving the Address");

NSArray *currentLanguageArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects:@"en_US", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

[_geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
    NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
    if (error == nil && [placemarks count] > 0) {
        _placemark = [placemarks lastObject];
        //addressLabel.text = [NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@",
        //                     placemark.subThoroughfare, placemark.thoroughfare,
        //                     placemark.postalCode, placemark.locality,
        //                     placemark.administrativeArea,
        //                     placemark.country];
        NSLog(@"%@ - %@", _placemark.locality, _placemark.country);

    } else {
        NSLog(@"%@", error.debugDescription);
    }

    [[NSUserDefaults standardUserDefaults] setObject:currentLanguageArray forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];

} ];}
在示例代码中,我使用以下变量:

@property(nonatomic, retain) IBOutlet MKMapView *mapView;
@property(nonatomic, retain) CLLocationManager *locationManager;
@property(nonatomic, retain) CLGeocoder *geocoder;
@property(nonatomic, retain) CLPlacemark *placemark;
这个示例代码用英语给出了城市名称和国家,我还没有测试城市名称是否正确地用英语显示,但它可能很好


希望能有帮助

尝试更改设备上的语言和区域。这对我来说是正确的。我希望这会有帮助

我添加了
[[NSUserDefaults standardUserDefaults]同步]检查它是否有效。我已经试过了,但还是一样。不是用英语=\