Domanda

Voglio solo sapere se l'utente ha impostato l'iPhone in modalità 12 ore per la visualizzazione dell'ora.

La classe NSLocale sembrava descrivere (in termini vaghi e non specifici senza esempi o metodi apparentemente utili) ciò che stavo cercando.

Quindi ho creato alcuni oggetti NSLocale in questo modo:

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

Quando ispeziono questi oggetti usando il debugger o NSLog () , il meglio che posso ottenere è qualcosa del genere:

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

La locale corrente contiene una stringa ID, ma nient'altro.

Dalla documentazione, posso cercare i valori dalle impostazioni locali e uno di questi è un oggetto NSCalendar . Quindi lo riprendo e lo guardo, e mi dice che è "quotorian" ".

Tutto ciò sembra essere utile a qualcuno ... ma quello che mi piacerebbe davvero è un bel dizionario di attributi che mostra tutte le proprietà del sistema reale, principalmente in modo che il mio NSDateFormatters don ' Continuo a saltare in aria quando un utente sceglie il formato di 12 ore anche se ho costretto i formattatori a utilizzare le impostazioni locali en_US_POSIX e un formato fisso setDate .

(Sono sicuro che NSCalendarDate non ha mai avuto questi problemi ...)

Spero che mi manchi qualcosa di palesemente (e probabilmente imbarazzante) ovvio, ma forse qualcuno gentile lo condividerebbe con me. Per favore :)

È stato utile?

Soluzione

Ecco un modo per sapere se l'utente ha impostato il formato dell'ora su un formato di 12 o 24 ore:

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top