Локаль из CLPlacemark
Я пытаюсь получить Код страны ИСО локаль как "en_US" из объекта CLPlacemark. Когда я делаю NSLog для объекта, я получаю много текста, включая это:
address = {
"localized_address" = (
{
address = {
formattedAddressLine = (
"Piccadilly Circus",
"Coventry Street",
London,
W1J,
England
);
structuredAddress = {
administrativeArea = England;
areaOfInterest = (
"Piccadilly Circus",
"Great Britain"
);
country = "United Kingdom";
countryCode = GB;
dependentLocality = (
Mayfair
);
fullThoroughfare = "Coventry Street";
geoId = (
);
locality = London;
postCode = W1J;
subAdministrativeArea = London;
subLocality = Mayfair;
thoroughfare = "Coventry Street";
};
};
locale = "en_US";
В последней строке вы видите именно ту информацию, которая мне нужна. Но я понятия не имею, как получить доступ к этой информации напрямую.
Когда я пытаюсь получить доступ к свойству ISOcountryCode CLPlacemark, я получаю только ГБ.
Спасибо за вашу помощь Бернхард
1 ответ
Решение
Это немного хакерски, но это один из способов, которым вы сможете получить информацию
NSString *placemarkDescription = [yourPlacemark description];
NSString *regex = @"(locale)(\\s+)(=)(\\s+)("".*?"")(;)";
NSRange localeRange = [placemarkDescription rangeOfString:regex options:NSRegularExpressionSearch];
NSString *locale = [placemarkDescription substringWithRange:localeRange];
Это регулярное выражение уродливо и, вероятно, может быть улучшено (я использовал http://txt2re.com/), но это должно быть в состоянии найти язык для вас.