NSLocaleはほとんど空です-属性はどこにありますか?
-
22-07-2019 - |
質問
ユーザーが時間表示のためにiPhoneを12時間モードに設定したかどうかを知りたいだけです。
NSLocale
クラスは(例や明らかに有用なメソッドのない曖昧で不明確な用語で)私が望んでいたことを説明しているように見えました。
だから私はいくつかの NSLocale
オブジェクトを次のように作成しました:
NSLocale *systemLocaleApparently = [NSLocale systemLocale];
NSLocale *currentLocaleWithLotsOfGoodies = [NSLocale autoupdatingCurrentLocale];
デバッガまたは NSLog()
を使用してこれらのオブジェクトを検査する場合、次の行に沿って何かを取得できます。
<CFLocale 0x1278e0 [0x382084f8]>{type = system, identifier = ''}
現在のロケールにはID文字列が含まれていますが、他には何もありません。
ドキュメントから、ロケールから値を検索できます。これらの1つは NSCalendar
オブジェクトです。それで私はそれを取り戻し、それを見てみると、「グレゴリオ」であることがわかります。
すべては明らかに誰かに役立つ...しかし、私が本当に欲しいのは、主に NSDateFormatters
がしないように、実際のシステムプロパティのすべてを示す属性の素晴らしい大きな辞書ですフォーマッターに en_US_POSIX
ロケールと固定の setDate
形式を使用するように強制しているにもかかわらず、ユーザーが12時間形式を選択したときに爆発し続けます。
( NSCalendarDate
はこれらの問題に遭遇したことはないと確信しています...)
願わくば、私は露骨に(そして恐らく恥ずかしいことに)明らかな何かを見逃しているが、誰かがそれを私と共有するかもしれない。お願いします:)
解決
ユーザーが時間形式を12時間形式または24時間形式に設定したかどうかを確認する方法の1つを次に示します。
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setTimeStyle:NSDateFormatterMediumStyle];
// Look for H (24-hour format) vs. h (12-hour format) in the date format.
NSString* dateFormat = [formatter dateFormat];
BOOL using24HourClock = [dateFormat rangeOfString:@"h"].location == NSNotFound;
所属していません StackOverflow