Czy istnieje sposób, aby zobaczyć, co zostało NSUserDefaults
bezpośrednio zapisane ? Chciałbym sprawdzić, czy moje dane zostały poprawnie zapisane.
ios
objective-c
macos
nsuserdefaults
Ethan
źródło
źródło
Odpowiedzi:
Możesz znaleźć plik pList dla swojej aplikacji w symulatorze, jeśli:
/ users / twoja nazwa użytkownika / Library / Application Support / iPhone Simulator / <Sim Version> / Applications
Ten katalog ma kilka katalogów o nazwie GUID. Jeśli pracujesz nad kilkoma aplikacjami, będzie ich kilka. Musisz znaleźć binarną aplikację:
Następnie przejdź do katalogu Library / Preferences w katalogu GUID. Więc:
Powinieneś znaleźć plik, który wygląda następująco:
Otwórz to w edytorze pList i przeglądaj utrwalone wartości do treści twojego serca.
źródło
NSUserDefaults
,NSUserDefaults
to nie są one utrwalane w pliku .plist, ale raczej zarządzane w pamięci: stackoverflow.com/questions/6193597/...Możesz wydrukować wszystkie bieżące NSUserDefault do dziennika:
Tylko klucze:
Klucze i wartości:
źródło
W Swift możemy użyć następujących opcji:
Swift 3.x i 4.x
Aby uzyskać wszystkie klucze i wartości:
Aby pobrać pełną reprezentację słownikową domyślnych ustawień użytkownika:
Aby odzyskać klucze:
Aby pobrać wartości:
Możemy również użyć zrzutu, ale to zwróci pełną hierarchię dziedziczenia każdego elementu w tablicy wartości. Jeśli wymagane są dodatkowe informacje o obiektach, użyj zrzutu, w przeciwnym razie przejdź do normalnej instrukcji print.
Swift 2.x
Aby pobrać pełną reprezentację słownikową domyślnych ustawień użytkownika:
Aby odzyskać klucze:
Aby pobrać wartości:
źródło
Możesz sprawdzić wartości dla każdego klucza w tablicy, zwrócone przez
źródło
Czasami używam następującego fragmentu kodu, aby wydrukować lokalizację mojego pliku NSUserDefaults podczas działania w symulatorze
Daje ścieżkę do folderu preferencji
Twój plik NSUserDefaults znajduje się w folderze preferencji i nazywa się go zgodnie z prefiksem i nazwą aplikacji, np.
Oczekuję, że to samo będzie prawdziwe w przypadku rzeczywistego urządzenia.
źródło
Łatwo, ponieważ nazwa pliku plist to
<app-bundle-identifier>.plist
, możesz użyćfind
polecenia, aby znaleźć jego ścieżkę. Ale zajmie to dużo czasu, jeśli przeszukasz cały komputer, więc musisz wybrać dobry zakres, jak w~/Library/Developer/CoreSimulator
przypadku Xcode 6.przykład:
find ~/Library/Developer/CoreSimulator -type f -name com.awesome.app.plist
wynik będzie taki jak ten ...
/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
I stamtąd możesz użyć
open
polecenia. Lub jeśli korzystasz z iTerm2 , po prostu kliknij ścieżkę, aby ją otworzyć.źródło
W Swift 4.0
ponieważ DictionaryRepresentation z NSUserDefaults.standardUserDefaults () zwraca [String: AnyObject]
Rzucamy to na
NSDictionary
. Następnie, otaczając go w nawiasach, „()” pozwoli nam wywołać .allKeys lub .allValues, tak jak w przypadku dowolnego NSDictionaryźródło
Użyj poniższego kodu.
źródło
W przypadku aplikacji OS X zamiast znajdować domyślny plik listy aplikacji, łatwiej jest użyć
defaults
narzędzia wiersza poleceń.Przykład:
źródło
Dla Xcode 7
NSUserDefault standardDefaults są tutaj przechowywane:
/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Data/Application/{UUID}
NSUserDefaults dla pakietu / grupy aplikacji są przechowywane tutaj:
/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Shared/AppGroup/{UUID}/Library/Preferences/{GROUP_NAME}.plist
Polecam korzystanie z https://github.com/scinfu/NCSimulatorPlugin, ponieważ w dzisiejszych czasach wszystko stoi za identyfikatorami UUID i znalezienie ich jest bardzo trudne. Umożliwia łatwy dostęp do katalogów aplikacji symulatora.
źródło
Zbudowałem tę metodę w oparciu o sugestię Moriona dla lepszej prezentacji. Użyj go dzwoniąc
[self logAllUserDefaults]
źródło
NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] debugDescription]);
(Prawie jak w wyżej głosowanej odpowiedzi powyżej).Wyszukaj aplikację Mac o nazwie SimPholder2 . Znajduje się na pasku menu i zawiera listę wszystkich używanych symulatorów, a następnie pokazuje każdą z Twoich aplikacji. Wybierz jedno, a pojawi się nowe okno Findera, otwarte już w katalogu aplikacji. Dzięki temu znalezienie aplikacji i wszystkich jej katalogów jest bardzo łatwe. To ogromna oszczędność czasu (i chętnie przekazałem autorowi).
źródło
Symulator aplikacji
Ten skrypt powłoki wyszukuje nazwę aplikacji, uzyskuje identyfikator pakietu i otwiera foldery zawierające pliki Plist .
Rozszerzona wersja skryptu
Stosowanie:
iphone-app-folder "My App"
Aplikacja na Maca
źródło
W Swift 2.2
wydrukuje lokalizację folderu pliku plist NSUserDefaults w konsoli debugowania Xcode. Skopiuj ciąg ścieżki. Otwórz Finder, wybierz Idź do folderu w menu Idź, Wklej ciąg ścieżki. Kliknij dwukrotnie plik Plist. Zobaczysz zawartość w swoim edytorze Xcode.
Działa tylko w Symulatorze
Dzięki @Niels Castle
źródło
Na pulpicie trzymam skrót do folderu symulatora, w którym znajdują się aplikacje, tj .:
Posortowane według najnowszej daty, a następnie przejdź do najnowszego folderu aplikacji Biblioteka / Preferencje i wyświetl plik w edytorze list.
źródło
Szybki 3
źródło
Aplikacje MacOS
Przejdź do: /Users/{User}/Library/Containers/com.{your company}. {Twoja aplikacja} / Data / Library / Preferences i otwórz listę aplikacji w Xcode.
źródło
Jest to cała ścieżka, w której wartości kluczy UserDefaults będą znajdować się w pliku plist. Śledź i znajdź plik .plist identyfikatora pakietu aplikacji.
Tutaj „4176EED3-B9FC-4C77-A25E-ASD201B9FDFG2” to Twój identyfikator urządzenia
a „56D7CE31-9A8B-4371-9B0F-9604E239423B0” to identyfikator aplikacji
Zwykle otrzymuję je, sortując foldery według daty ostatniej modyfikacji w Finderze. Ostatnio edytowanym folderem jest mój identyfikator urządzenia i identyfikator aplikacji.
Cieszyć się!
źródło
Możesz NSLog każdą ustawioną wartość, na przykład:
źródło
Po przeczytaniu zaakceptowanej odpowiedzi na to pytanie, stworzyłem ten prosty skrypt, który otwiera pliki Plist używane przez symulator iOS do przechowywania
NSUserDefaults
preferencji, i chociaż zakłada pewną konfigurację (idealnie pasuje do mojej), może działać jako punkt wyjścia dla innych .Przykładowe umieszczenie:
źródło
Możesz użyć tego, aby uzyskać pełną ścieżkę preferencji użytkownika, pamięci podręcznej i wielu innych danych
print(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true))
źródło
Możesz wydrukować ścieżkę do katalogu preferencji z
application:didFinishLaunchingWithOptions:
wywołania zwrotnego w AppDelegate:Następnie możesz spojrzeć bezpośrednio na plik plist, aby zobaczyć, co tam jest zapisane.
źródło