2013-05-08 10 views
19

Ho un'impostazione a più valori (posizione) definita nel pacchetto di impostazioni per un'app.
I titoli sono definiti come titoli lunghi, ad esempio "Londra" e la parte del valore corrispondente dell'impostazione è definita come "1".Come utilizzare il valore multi titolo e il valore dal pacchetto di impostazioni

[EDIT]

Per espandere questa domanda vorrei aggiungere ulteriori informazioni sulla impostazione del valore a più:

this is a screenshot of the multi value setting

Come faccio a recuperare il titolo di Londra al lotto 0. Come descritto sopra quando richiamo objectForKey o valueForKey ottengo 1 sempre. Voglio visualizzare la stringa "LONDRA" dal titolo in un'etichetta nell'app ma utilizzare il valore 1 nei dati principali. Nota: ho impostato il valore nelle impostazioni prima che l'app venga eseguita in modo che restituisca un valore, ma il valore è sempre 1 in quanto il titolo non sembra essere accessibile.

+0

So come ottenere le impostazioni. Voglio sapere come visualizzare il titolo che è diverso dal valore nel mio esempio sopra. Quando uso il tuo esempio sopra objectForKey: @ "locSetting" restituisce LDN. Quando uso valueForKey: @ "locSetting" Ricevo anche LDN restituito. Ma ho il titolo nelle mie impostazioni multi valore in settings.bundle impostato su "London". – motionpotion

+0

@ H2CO3 Google non è inattivo.La tua risposta non risponde al mio specifico scenario. Ma grazie per la risposta. – motionpotion

+0

Il valore predefinito non riguarda la posizione dell'indice, ma i valori – jomafer

risposta

7

Si dovrebbe impostare il valore "Valore predefinito" come "1" - Solo l'elemento 0 dalla lista "Valori".

+0

Grazie ha funzionato per me! –

+0

Ho già impostato un "Valore predefinito". Sto cercando di visualizzare il valore del testo e di inserire il valore per quel valore di testo in Core Data. Il titolo = "LONDRA" non sembra accessibile. – motionpotion

+0

questa risposta non è correlata alla domanda. – Tamil

3

Le impostazioni di posizione come valore multi, è un NSDictionary. Pertanto, effettuare le seguenti operazioni:

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 

NSString *value = (NSString *)location; 

cast del valore posizione come NSString perché sai una stringa deve essere restituito.

È quindi possibile gestire il risultato come una stringa. La variabile "valore" restituita è ciò che è scritto nella sezione del valore. Nel tuo caso, se selezioni "Londra", otterrai il valore di "1" sotto forma di stringa.

0

Se la mia comprensione della tua domanda è corretta, ti stai chiedendo come ottenere la voce Chiave del dizionario di posizione per il valore scelto dall'utente.

Per i dizionari, non esiste un metodo monouso. Ma v'è un modo per ottenere lo stesso risultato tramite manipolazione allKeys come qui sotto:

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 
NSArray *keys = [location allKeys]; 
NSString *locationIdentifier = [keys objectForIndex:[location valueForKey:@"LONDON"]]; 

Questo comporterebbe stringa "LONDON" essendo memorizzato nella variabile locationIdentifier. Quindi l'ultima riga, l'assegnazione della stringa, potrebbe essere modificata semplicemente per avere semplicemente objectForIndex:0, ma non è qualcosa che ho provato prima quindi non ne sono certo.

3

Mi sono imbattuto in una situazione simile e ho risposto alla domanda che avrebbe aiutato qualcuno.

Se ho letto correttamente la domanda, quando l'utente seleziona Londra dalle impostazioni il valore predefinito sarà 1. quando leggi il pacchetto di impostazioni per la posizioneImpostazione ottieni il valore 1 e non LONDON, ma vuoi il "LONDON" in il tuo codice anziché 1. Non è possibile con la struttura attuale del tuo plist. rendere il valore predefinito un dizionario anziché una stringa e quindi è possibile avere sia titoli che valori all'interno di quel dizionario. è quindi possibile recuperare il testo del valore selezionato.

Problemi correlati