2013-10-21 5 views
11

Ich habe ein Problem über die Programmierung einer OSX-Anwendung auf Xcode 5 während der Verwendung der NSUserDefaults. Normalerweise verwenden wir einfach [[NSUserDefaults standardUserDefaults] setObject:@"This is an object" forKey:@"Test"], um sich an eine Benutzereinstellung zu erinnern. Danach erzeugt die Anwendung eine PLIST-Datei unter ~/Library/Preferences/application.bundle.identifier.plist.Xcode 5.0 NSUserdefaults noch gespeichert Einstellungen nach dem Löschen der Plist

Das Problem ist, nachdem die PLIST-Datei gelöscht wurde, konnte die Anwendung immer noch die Präferenzen erhalten, die ich gespeichert habe. Es gibt keine Möglichkeit, diese PLIST zu löschen, selbst wenn ich versuche, das Projekt zu säubern, xcode neu zu starten, die Dateien im abgeleiteten Ordner zu löschen. Die einzige Möglichkeit für mich, dieses Problem zu lösen, besteht darin, das System neu zu starten, also denke ich, dass etwas im Speicher gespeichert ist. Die Frage ist, wie kann ich diese gespeicherten Einstellungen löschen? (Ich glaube nicht, dass es bequem ist, die Einstellungen zu löschen, indem Sie beim Debuggen und Testen manuell Code hinzufügen.) Und ich habe die frühere Version von Xcode 4.x ausprobiert, da gibt es kein Problem. Wer hat Interesse könnte gerade ein neues Kakao-Projekt erstellen, und den Code wie hinzufügen:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];  
[defaults setObject:@"This is an object." forKey:@"Test"];  
NSLog(@"%@", [defaults objectForKey:@"Test"]); 

unter „applicationDidFinishLaunching“. Dann gehen und löschen ~/Library/Preferences/application.bundle.identifier.plist. Danach kommentieren Sie die Zeile: [defaults setObject:@"This is an object." forKey:@"Test"]; in Ihrem Code und führen Sie die Anwendung erneut aus. Die Konsole zeigt weiterhin "This is an object." Meine Umgebung ist Mavericks GM und Xcode 5.0 (5a1413).

Hoffe, das ist nicht nur etwas passiert nur mir und jede Hilfe geschätzt!

+0

Mit welchem ​​SDK verknüpfen Sie? Wenn Sie unmittelbar nach dem Löschen auf die Einstellungen zugreifen und die gelöschten Daten erhalten, ist es möglich, dass die Daten zwischengespeichert werden. – SevenBits

+2

mögliches Duplikat von [Wo speichert NSUserDefaults Daten unter Mac OS X?] (Http://stackoverflow.com/questions/19234665/where-does-nsuserdefaults-store-data-on-mac-os-x) –

Antwort

20

Dies ist ein OS X-Problem, das nicht direkt mit der von Ihnen verwendeten Xcode-Version zusammenhängt. Apples offizielle Linie ist, dass das Löschen der PLIST-Datei zum Entfernen von Einstellungen nie offiziell unterstützt wurde, und in neueren OS X-Versionen ist es aufgrund von Änderungen in der Speicherung der Einstellungen unzuverlässig.

Die unterstützte Möglichkeit Einstellungen zu entfernen, ist die defaults Befehl an das Terminal zu verwenden, z.B .:

defaults delete application.bundle.identifier 

Der defaults Befehl kann auch individuelle Einstellungen mit in den Einstellungen entfernen/ändern. Für vollständige Details siehe man defaults.

+0

Vielen Dank sehr viel! – john

+0

Das ist mir heute auch eingefallen. Achten Sie beim Löschen der Standardeinstellungen wie @CRD darauf, dass die Groß-/Kleinschreibung beachtet wird! – Besi

Verwandte Themen