سؤال

وأنا حقا نريد فقط أن نعرف ما إذا كان المستخدم قد تحدد اي فون لوضع 12 ساعة لعرض الوقت.

والطبقة NSLocale بدا أن يصف (من حيث غير محددة غامضة دون أية أمثلة أو أساليب مفيدة على ما يبدو) ما كنت بعد.

وهكذا لقد خلق بعض الكائنات NSLocale مثل ذلك:

NSLocale *systemLocaleApparently = [NSLocale systemLocale];
NSLocale *currentLocaleWithLotsOfGoodies = [NSLocale autoupdatingCurrentLocale];

وعندما تفقد هذه الكائنات باستخدام المصحح أو NSLog()، وأفضل ما يمكن أن تحصل عليه هو شيء على طول هذه الخطوط:

<CFLocale 0x1278e0 [0x382084f8]>{type = system, identifier = ''} 

والإعدادات المحلية الحالية لديها سلسلة ID في ذلك، ولكن أي شيء آخر.

ومن وثائق، ويمكن البحث القيم من لغة، وأحد هؤلاء هو كائن NSCalendar. حتى أحصل على أن يعود وإلقاء نظرة على ذلك، ويقول لي انه "الميلادي".

وكل منها على ما يبدو من استخدام لشخص ما ... ولكن ما أود حقا هو قاموس كبيرة لطيفة من سمات تظهر كافة الخصائص النظام الفعلي، وذلك أساسا بحيث بلدي NSDateFormatters لا تبقي تفجير عندما يقوم المستخدم يختار شكل 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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top