iPhone - MKReverseGeocoder.adminstrativeArea - получение сокращения штата - PullRequest
2 голосов
/ 25 марта 2010

В документации по MKReverseGeocoder свойство administratorArea указывает текущее состояние, в котором находится пользователь, и в примере упоминает, что возвращает ЛИБО имя состояния ИЛИ его сокращение. Мне интересно, знает ли кто-нибудь, как получить аббревиатуру вместо полного имени штата ... Я не смог найти ничего, что показывало бы эту возможность, кроме того краткого примера, в котором не упоминается КАК.

Спасибо!

Ответы [ 2 ]

7 голосов
/ 18 июня 2011

Мне также нужно было преобразовать поле State из MKReverseGeocoder в двухбуквенное сокращение, поэтому я создал этот список:

https://github.com/djibouti33/US-State-Abbreviations

Вот как я это использую:

// in my init
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"USStateAbbreviations" ofType:@"plist"];
self.usStateAbbreviations = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

// MKReverseGeocoder delegate method
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {   
... 
    NSString *state = [address objectForKey:@"State"];
    NSString *stateAbbreviation = [self.usStateAbbreviations objectForKey:[state uppercaseString]];
    NSString *stateTarget = state;
    if (stateAbbreviation) {
        stateTarget = stateAbbreviation;
    }    
...
}
3 голосов
/ 25 марта 2010

Нет способа сделать это. Не уверен, почему в документах Apple написано «Калифорния или Калифорния».

Легко преобразовать состояние в двухбуквенное имя. Просто создайте список (таблица, или NSDictionary работает тоже) из следующего: http://www.usps.com/ncsc/lookups/usps_abbreviations.html и используйте его для поиска 2-буквенных сокращений.

...