Как определить, использует ли пользователь 24 часа, используя Какао? - PullRequest
2 голосов
/ 06 октября 2008

Я пытаюсь определить, использует ли пользователь 24-часовое или 12-часовое время, и, похоже, нет лучшего способа понять это, кроме создания NSDateFormatter и поиска строки формата для поля периода (символ «а»)

Вот что я сейчас делаю:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeStyle:NSDateFormatterShortStyle];
NSRange range = [[formatter dateFormat] rangeOfString:@"a"];
BOOL is24HourFormat = range.location == NSNotFound && range.length == 0;
[formatter release];

Который работает, но чувствует себя немного хрупким. Должен быть лучший способ, верно?

Ответы [ 2 ]

2 голосов
/ 06 октября 2008

Эта информация предоставляется в NSUserDefaults. Может быть, под ключом NSShortTimeDateFormatString? (Разумеется, требуется разбор).

(Используйте

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

для сброса всех предопределенных пользовательских настроек по умолчанию).

Не совсем уверен, почему вы хотите это сделать - держу пари, у вас есть веская причина - но может быть, лучше вместо этого просто использовать значения по умолчанию в NSDateFormatter?

0 голосов
/ 06 октября 2008

NSShortTimeDateFormatString устарела, и я считаю, что она также эффективно не работает в 10.5 и более поздних версиях. См. Примечания к выпуску 10.4 и 10.5 Foundation. Сброс всех значений по умолчанию - хороший способ зависеть от того, что не гарантируется интерфейсом, хотя может быть интересно посмотреть, что происходит под капотом.

Зачем тебе это? Как говорит Шва, все работает намного лучше, если вам не нужно знать что-либо о локализованной презентации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...