Ho un problema nel recuperare i valori predefiniti dal pacchetto delle impostazioni quando si avvia per la prima volta un'app. Tutti i campi non multivalore restituiscono correttamente il valore predefinito. Tutti i campi multivalore restituiscono NULL. Il codice che sto usando per recuperare il valore corrente:Impostazioni di tipo multivalore raggruppamento dei campi sempre restituito null
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *upt=[defaults objectForKey:@"upthreshold"];
La sezione pertinente da Root.plist è:
<dict>
<key>Title</key>
<string>Update Threshold</string>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Key</key>
<string>upthreshold</string>
<key>DefaultValue</key>
<string>15</string>
<key>Titles</key>
<array>
<string>2 km</string>
<string>5 km</string>
<string>10 km</string>
<string>15 km</string>
<string>25 km</string>
<string>50 km</string>
<string>75 km</string>
<string>100 km</string>
<string>150 km</string>
<string>250 km</string>
<string>500 km</string>
<string>1000 km</string>
</array>
<key>Values</key>
<array>
<string>2</string>
<string>5</string>
<string>10</string>
<string>15</string>
<string>25</string>
<string>50</string>
<string>75</string>
<string>100</string>
<string>150</string>
<string>250</string>
<string>500</string>
<string>1000</string>
</array>
</dict>
Mi aspetterei che "15" sarebbero tornati come il valore attuale in quanto è impostato sul valore predefinito. È richiesta una diversa elaborazione per i campi multivalore? Come ho detto in precedenza, ci sono 6 campi precedenti a questo che restituiscono correttamente i loro valori. Questo campo e i seguenti 2 campi Multivalore no. I campi multivalore sono tutti definiti allo stesso modo.
Potrei essere frainteso, ma sembra che "upthreshold" è un valore per la chiave "Chiave", non una chiave stessa. –
Ho tutti i campi impostati in questo modo e ogni esempio che ho visto imposta la "Chiave" in questo modo e questo è il modo in cui si fa riferimento al campo quando si esegue una chiamata objectForKey. Penso che sia giusto. Se no, come lo definiresti? – mlewis54
Ho sempre avuto problemi con i valori predefiniti se la pagina delle impostazioni non è stata ancora visitata. Tendo a rilevare nil e hardcode come predefinito nell'app. Non è bello ma funziona :( – deanWombourne