Gibt es eine Möglichkeit zu sehen, in was NSUserDefaults
direkt gespeichert wurde ? Ich würde gerne sehen, ob meine Daten korrekt gespeichert wurden.
ios
objective-c
macos
nsuserdefaults
Ethan
quelle
quelle
Antworten:
Sie finden die pList-Datei für Ihre App im Simulator unter:
/ users / Ihr Benutzername / Library / Application Support / iPhone Simulator / <Sim-Version> / Applications
Dieses Verzeichnis enthält eine Reihe von GUID-Verzeichnissen. Wenn Sie an einigen Apps arbeiten, gibt es einige davon. Sie müssen also Ihre App-Binärdatei finden:
Wechseln Sie dann in das Verzeichnis Library / Preferences im GUID-Verzeichnis. So:
Sie sollten eine Datei finden, die wie folgt aussieht:
Öffnen Sie dies im pList-Editor und durchsuchen Sie dauerhafte Werte nach Herzenslust.
quelle
NSUserDefaults
,NSUserDefaults
werden diese nicht in einer .plist-Datei gespeichert, sondern im Speicher verwaltet: stackoverflow.com/questions/6193597/…Sie können alle aktuellen NSUserDefaults in das Protokoll drucken:
Nur Schlüssel:
Schlüssel und Werte:
quelle
In Swift können wir Folgendes verwenden: -
Swift 3.x & 4.x.
So erhalten Sie alle Schlüssel und Werte:
So rufen Sie die vollständige Wörterbuchdarstellung der Benutzerstandards ab:
Zum Abrufen der Schlüssel:
Zum Abrufen der Werte:
Wir können hier auch dump verwenden, aber das gibt die vollständige Vererbungshierarchie jedes Elements im Wertearray zurück. Wenn weitere Informationen zu den Objekten erforderlich sind, verwenden Sie dump, andernfalls fahren Sie mit der normalen print-Anweisung fort.
Swift 2.x.
So rufen Sie die vollständige Wörterbuchdarstellung der Benutzerstandards ab:
Zum Abrufen der Schlüssel:
Zum Abrufen der Werte:
quelle
Sie können die Werte für jeden Schlüssel im Array überprüfen, der von zurückgegeben wird
quelle
Ich verwende manchmal das folgende Snippet, um den Speicherort meiner NSUserDefaults-Datei auszudrucken, wenn ich im Simulator ausgeführt werde
Es gibt den Pfad zum Einstellungsordner an
Ihre NSUserDefaults-Datei befindet sich im Einstellungsordner und ist nach Ihrem Präfix und Anwendungsnamen benannt, z
Ich erwarte, dass dies auch für das eigentliche Gerät gilt.
quelle
Da der Dateiname plist lautet
<app-bundle-identifier>.plist
, können Siefind
den Pfad mit dem Befehl ermitteln. Es dauert jedoch sehr lange, wenn Sie Ihren gesamten Computer durchsuchen. Daher müssen Sie einen guten Bereich auswählen, z. B.~/Library/Developer/CoreSimulator
für Xcode 6.Beispiel:
find ~/Library/Developer/CoreSimulator -type f -name com.awesome.app.plist
Die Ausgabe wird ungefähr so sein ...
/Users/hlung/Library/Developer/CoreSimulator/Devices/B61913F6-7D7C-4E45-AE2F-F45220A71823/data/Containers/Data/Application/E4CC51CF-11E5-4168-8A74-6BAE3B89998F/Library/Preferences/com.awesome.app.plist
Und von dort aus können Sie
open
Befehl verwenden. Wenn Sie iTerm2 verwenden , klicken Sie einfach mit der Befehlstaste auf den Pfad, um ihn zu öffnen.quelle
In Swift 4.0
weil dictionaryRepresentation von NSUserDefaults.standardUserDefaults () [String: AnyObject] zurückgibt
Wir werfen es in eine
NSDictionary
. Wenn wir es dann in Klammern '()' umgeben, können wir .allKeys oder .allValues wie in jedem NSDictionary aufrufenquelle
Verwenden Sie den folgenden Code.
quelle
Für OS X-Anwendungen ist es einfacher, das
defaults
Befehlszeilenprogramm zu verwenden, als die Standard-Plist-Datei der Anwendung zu finden .Beispiel:
quelle
Für Xcode 7
NSUserDefaults standardDefaults werden hier gespeichert:
/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Data/Application/{UUID}
NSUserDefaults für eine Suite / App-Gruppe werden hier gespeichert:
/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Shared/AppGroup/{UUID}/Library/Preferences/{GROUP_NAME}.plist
Ich würde empfehlen, https://github.com/scinfu/NCSimulatorPlugin zu verwenden, da heutzutage alles hinter UUIDs steckt und schwer zu finden ist. Es ermöglicht den einfachen Zugriff auf Ihre Simulator-App-Verzeichnisse.
quelle
Ich habe diese Methode basierend auf Morions Vorschlag für eine bessere Präsentation erstellt. Verwenden Sie es, indem Sie anrufen
[self logAllUserDefaults]
quelle
NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] debugDescription]);
(Fast wie in der oben am bestenSuchen Sie nach der Mac-App namens SimPholders2 . Es befindet sich in der Menüleiste und listet alle von Ihnen verwendeten Simulatoren auf. Anschließend werden alle Ihre Apps angezeigt. Wählen Sie eines aus und Sie erhalten ein neues Finder-Fenster, das bereits im Verzeichnis der App geöffnet ist. Dies macht es super einfach, Ihre App und alle ihre Verzeichnisse zu finden. Das spart viel Zeit (und ich habe dem Autor gerne gespendet).
quelle
Simulator App
Dieses Shell-Skript sucht nach dem Namen der App, ermittelt die Bundle-ID und öffnet Ordner mit den Plist-Dateien .
Erweiterte Skriptversion
Verwendung:
iphone-app-folder "My App"
Mac App
quelle
In Swift 2.2
druckt den Ordner der plist-Datei von NSUserDefaults in der Xcode-Debug-Konsole aus. Kopieren Sie die Pfadzeichenfolge. Öffnen Sie Ihren Finder, wählen Sie im Menüelement Gehe zu Ordner wechseln und fügen Sie die Pfadzeichenfolge ein. Doppelklicken Sie auf die Plist-Datei. Sie sehen den Inhalt in Ihrem Xcode-Editor.
Arbeiten Sie nur im Simulator
Danke @Niels Castle
quelle
Ich behalte auf meinem Desktop eine Verknüpfung zum Ordner des Simulators, in dem die Apps gespeichert sind, z.
Sortiert nach dem letzten Datum, gehen Sie einfach in den neuesten App-Ordner Bibliothek / Einstellungen und zeigen Sie die Datei im Plist-Editor an.
quelle
Swift 3
quelle
Für MacOS-Apps
Gehen Sie zu: /Users/{User}/Library/Containers/com.{your company}. {Ihre App} / Data / Library / Preferences und öffnen Sie die pList Ihrer App mit Xcode.
quelle
Dies ist der gesamte Pfad, in dem sich Ihre UserDefaults-Schlüsselwerte in einer Plist-Datei befinden. Folgen Sie und finden Sie Ihre .plist-Datei zur App-Bundle-ID.
Hier ist "4176EED3-B9FC-4C77-A25E-ASD201B9FDFG2" Ihre Geräte-ID
und "56D7CE31-9A8B-4371-9B0F-9604E239423B0" ist Ihre Anwendungs-ID
Normalerweise erhalte ich sie, indem ich Ordner nach dem letzten Änderungsdatum im Finder sortiere. Der zuletzt bearbeitete Ordner ist meine Geräte-ID und App-ID.
Genießen!
quelle
Sie können jeden von Ihnen festgelegten Wert wie folgt protokollieren:
quelle
Nachdem ich die akzeptierte Antwort dieser Frage gelesen habe, habe ich dieses einfache Skript zusammengestellt, das die Plist-Dateien öffnet, die vom iOS-Simulator zum Speichern der
NSUserDefaults
Einstellungen verwendet werden. Obwohl es ein bestimmtes Setup voraussetzt (passt perfekt zu meinem), kann es als Ausgangspunkt für andere dienen .Beispielplatzierung:
quelle
Sie können dies verwenden, um den vollständigen Pfad zu Benutzereinstellungen, Cache und vielen anderen Daten abzurufen
print(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true))
quelle
Sie können den Pfad für das Voreinstellungsverzeichnis aus dem
application:didFinishLaunchingWithOptions:
Rückruf in Ihrem AppDelegate ausdrucken:Dann können Sie direkt in die Plist-Datei schauen, um zu sehen, was dort gespeichert ist.
quelle