nslocale은 대부분 비어 있습니다. 속성은 어디에 있습니까?
-
22-07-2019 - |
문제
사용자가 시간 표시를 위해 iPhone을 12 시간 모드로 설정했는지 알고 싶습니다.
그만큼 NSLocale
수업은 내가 무엇을했는지에 대해 설명하는 것처럼 보였습니다 (예제 나 명백히 유용한 방법이없는 모호한 용어로).
그래서 나는 일부를 만들었습니다 NSLocale
그렇게 같은 개체 :
NSLocale *systemLocaleApparently = [NSLocale systemLocale];
NSLocale *currentLocaleWithLotsOfGoodies = [NSLocale autoupdatingCurrentLocale];
디버거를 사용하여 이러한 물체를 검사 할 때 NSLog()
, 내가 얻을 수있는 가장 좋은 것은 다음과 같은 것입니다.
<CFLocale 0x1278e0 [0x382084f8]>{type = system, identifier = ''}
현재 로케일에는 ID 문자열이 있지만 다른 것은 없습니다.
문서에서, 나는 로케일에서 값을 조회 할 수 있으며, 그 중 하나는 NSCalendar
물체. 그래서 나는 그것을 되 찾아서 그것을 보았고, 그것이 "그레고리안"이라고 말합니다.
모든 것이 분명히 누군가에게 사용 된 것 같습니다 ...하지만 내가 정말로 좋아하는 것은 모든 실제 시스템 속성을 보여주는 멋진 속성의 큰 사전입니다. NSDateFormatters
Formatters가 사용하도록 강요했지만 사용자가 12 시간 형식을 선택했을 때 계속 폭발하지 마십시오. en_US_POSIX
로케일과 고정 setDate
체재.
(확실해 NSCalendarDate
이러한 문제가 없었던 적이 없습니다 ...)
바라건대 나는 뻔뻔스럽게 (그리고 아마도 당황스럽게) 분명한 것을 놓치고 있지만, 아마도 누군가가 그것을 나와 공유 할 것입니다. 제발 :)
해결책
다음은 사용자가 시간 형식을 12 시간 또는 24 시간 형식으로 설정했는지 알 수있는 한 가지 방법입니다.
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;