Mehrwertigen Einstellungen der bundle-Felder immer null zurück
Ich habe ein problem beim abrufen default-Werte aus dem settings-bundle beim ersten starten einer App. Alle nicht-mehrwertige Felder zurück der Standardwert richtig. Alle mehrwertigen Feldern NULL zurück. Der code, den ich verwende zum abrufen des aktuellen Werts:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *upt=[defaults objectForKey:@"upthreshold"];
Den entsprechenden Abschnitt von der Wurzel.plist ist:
<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>
Ich würde erwarten, dass die "15" zurückkommen würde, als der aktuelle Wert, wie es ist auf den Standardwert eingestellt. Gibt es eine unterschiedliche Bearbeitung erforderlich, für die Mehrwertigen Felder? Wie ich schon sagte, es gibt 6 Felder vor, die Rückgabe Ihrer Werte korrekt. Dieses Feld und die folgenden 2 Mehrwertige Felder nicht. Die mehrwertigen Felder sind alle identisch definiert.
- Ich konnte dieses Missverständnis, aber es sieht aus wie "upthreshold" ist ein Wert für den Schlüssel "Key", nicht die Schlüssel selbst.
- Ich habe alle setup-Felder auf diese Weise, und jedes Beispiel, das ich gesehen habe, legt den "Schlüssel" auf diese Weise und das ist die Art und Weise Sie beziehen sich auf das Feld, wenn Sie eine objectForKey nennen. Ich denke, das ist Recht. Wenn nicht, wie würden Sie es definieren?
- Ich hatte schon immer Probleme mit der default-Werte, falls die Einstellungen-Seite wurde noch nicht besucht haben, noch. Ich Neige dazu, zu erkennen, null und fest ein Standard in der app. Es ist nicht schön aber es funktioniert 🙁
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der Wert nicht durch den Benutzer geändert in den Einstellungen der app gibt es keine Einstellung.
Der default-Wert in den Einstellungen angegeben-Paket ist nur der default für die Anzeige in der app "Einstellungen"
müssen Sie manuell registrieren Ihre default-Werte. NSUserdefaults nicht, verwenden Sie die Standardwerte der Einstellungen bündeln.
Verwenden Sie so etwas wie dieses, fügen Sie es am Anfang Ihrer app (bevor Sie Zugriff auf die userdefaults).
Eingetragene Userdefaults sind nicht auf der Festplatte gespeichert oder so. Sie registrieren, Sie jedes mal, wenn Sie starten Sie die app.
registerDefaults
für nur eine Taste, wie ist es anders zu setzen Sie einfach das Objekt für einen bestimmten Schlüssel?Ich lief in dieses problem, und ich Frage mich, warum die Einstellungen bundle bietet einen default-Wert, wenn dieser Wert kann nie gelesen werden, von der
NSUserDefaults
.Erstellte ich eine rasche Erweiterung, die Folgendes macht:
Also ich kann dies tun:
Dies ist die Erweiterung: