Une façon simple de voir les Nsuerdefaults sauvegardés?

y a-t-il un moyen de voir directement ce qui a été sauvegardé dans NSUserDefaults ? J'aimerais voir si mes données sont sauvegardées correctement.

199
demandé sur Leo Dabus 2009-11-05 00:57:32

19 réponses

vous pouvez trouver le fichier pList pour votre application dans le simulateur si vous allez à:

/users/ votre nom d'utilisateur /Library/Application Support/Simulateur d'iPhone//Applications

ce répertoire contient un tas de répertoires GUID nommés. Si vous travaillez sur quelques applications, il y en aura quelques-unes. Vous devez donc trouver votre application binaire:

find . -name foo.app
./1BAB4C83-8E7E-4671-AC36-6043F8A9BFA7/foo.app

puis allez à la Bibliothèque / Préférences répertoire dans le répertoire GUID. So:

cd 1BAB4C83-8E7E-4671-AC35-6043F8A9BFA7/Library/Preferences

vous devez trouver un fichier qui ressemble à:

<Bundle Identifier>.foo.pList

ouvrez ceci dans l'éditeur de pList et parcourez les valeurs persistantes à votre contenu de cœur.

153
répondu RedBlueThing 2016-12-24 15:53:04

vous pouvez imprimer tous les Nsuerdefaults courants dans le log:

Juste clés:

NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]);

touches et valeurs:

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
341
répondu marshn 2012-08-25 15:12:41

dans Swift, nous pouvons utiliser ce qui suit: -

Swift 3.x et 4.x

Pour obtenir toutes les clés et les valeurs de l':

for (key, value) in UserDefaults.standard.dictionaryRepresentation() {
    print("\(key) = \(value) \n")
}

pour extraire la représentation complète du dictionnaire des valeurs par défaut de l'utilisateur:

print(Array(UserDefaults.standard.dictionaryRepresentation()))

pour récupérer les clés:

// Using dump since the keys are an array of strings.
dump(Array(UserDefaults.standard.dictionaryRepresentation().keys))

pour la récupération des valeurs:

nous pouvons utiliser dump ici aussi, mais qui retournera le hiérarchie d'héritage complète de chaque élément dans le tableau des valeurs. Si vous avez besoin de plus d'informations sur les objets, utilisez dump, sinon allez de l'avant avec l'instruction d'impression normale.

// dump(Array(UserDefaults.standard.dictionaryRepresentation().values))
print(Array(UserDefaults.standard.dictionaryRepresentation().values))

Swift 2.x

pour extraire la représentation complète du dictionnaire des valeurs par défaut de l'utilisateur:

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation())

pour récupérer les clés:

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array)

pour la récupération des valeurs:

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().values.array)
66
répondu footyapps27 2018-01-26 01:58:21

vous pouvez vérifier les valeurs pour chaque clé dans le tableau, retourné par

[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]
36
répondu Morion 2015-08-20 02:52:53

j'utilise parfois l'extrait suivant pour imprimer l'emplacement de mon fichier par défaut Nsuerdefaults lors de l'exécution dans le simulateur

NSArray *path = NSSearchPathForDirectoriesInDomains(
   NSLibraryDirectory, NSUserDomainMask, YES);
NSString *folder = [path objectAtIndex:0];
NSLog(@"Your NSUserDefaults are stored in this folder: %@/Preferences", folder);

il fournit le chemin vers le dossier Préférences

vos Nuserdefaults sont stockés dans ce dossier: /Users/castle/Library/Application Support/iPhone Simulator/User/Applications/BC5056A0-F46B-4AF1-A6DC-3A7DAB984960/Library/Preferences

votre Le fichier NSUserDefaults est situé dans le dossier préférences et nommé en fonction de votre préfixe et du nom d'application, par exemple

dk.castleandersen.dreamteam.grid.plist

Je m'attends à ce que la même chose soit vraie pour le dispositif réel.

21
répondu Niels Castle 2016-04-12 07:33:35

utiliser le code ci-dessous.

NSLog(@"NSUserDefault: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
6
répondu Mr.Javed Multani 2017-01-05 07:12:32

Dans Swift 4.0

//func dictionaryRepresentation() -> [String : AnyObject]

parce que la représentation dictionnairedes défauts de Nsuserdef.standardUserDefaults() renvoie [String: AnyObject]

nous le plaçons dans un NSDictionary . Puis en l'entourant entre parenthèses '() ' nous permettra d'appeler .allKeys or .toutes les valeurs tout comme vous le feriez sur N'importe quel NSDictionary

 print((UserDefaults.standard.dictionaryRepresentation() as NSDictionary).allKeys)
5
répondu RyanTCB 2017-12-16 11:31:24

facile, puisque le nom du fichier plist est <app-bundle-identifier>.plist , vous pouvez utiliser la commande find pour trouver son chemin. Mais cela prendra beaucoup de temps si vous cherchez sur tout votre ordinateur, donc vous devez choisir un bon scope, comme ~/Library/Developer/CoreSimulator pour Xcode 6.

exemple:

find ~/Library/Developer/CoreSimulator -type f -name com.awesome.app.plist

le résultat sera quelque chose comme ceci...

/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

et de là vous pouvez utiliser open commande. Ou si vous utilisez iTerm2 , il suffit de command-click sur le chemin pour l'ouvrir.

4
répondu Hlung 2015-08-01 12:03:54

Pour Xcode 7

Nsuerdefaults standardDefaults sont stockés ici:

/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Data/Application/{UUID}

NSUserDefaults pour un bureau/app groupe sont stockées ici:

/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Shared/AppGroup/{UUID}/Library/Preferences/{GROUP_NAME}.plist

je recommande d'utiliser https://github.com/scinfu/NCSimulatorPlugin parce que ces jours-ci tout est derrière UUIDs et sont un douleur à trouver. Il permet un accès facile à vos répertoires d'applications de simulateur.

3
répondu user1270061 2016-11-03 21:06:52

j'ai construit cette méthode basée sur la suggestion de Morion pour une meilleure présentation. Utilisez-le en appelant [self logAllUserDefaults]

- (void) logAllUserDefaults
{
    NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys];
    NSArray *values = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allValues];
    for (int i = 0; i < keys.count; i++) {
        NSLog(@"%@: %@", [keys objectAtIndex:i], [values objectAtIndex:i]);
    }
}
2
répondu Julian F. Weinert 2012-07-11 10:46:23

recherchez L'application Mac appelée SimPholders2 . Il se trouve dans la barre de menu, et liste tous les simulateurs que vous avez utilisés, puis affiche chacune de vos applications. Sélectionnez - en une et vous obtenez une nouvelle fenêtre de Finder, déjà ouverte sur le répertoire de l'application. Cela rend super facile de trouver votre application et tous ses répertoires. C'est un énorme gain de temps (et j'ai fait un don à l'auteur).

2
répondu Jeff 2015-09-19 05:54:58

Simulateur App

cette recherche de script shell pour le nom de l'application, Obtenir le bundle id , et dossiers ouverts contenant les fichiers Plist .

#!/bin/bash

appname=""
[ -z $appname ] && read -p "Application name : " appname

apppath=$(find ~/Library/Developer/CoreSimulator/Devices/ -name "$appname.app" -print -quit)
if [[ ! -z $apppath ]]; then
    appbundle=$(osascript -e "id of app \"$apppath\"")
    find ~/Library/Developer/CoreSimulator/Devices/ -name "$appbundle.plist" -exec bash -c 'open "$(dirname "")"' -- {} \;
else
    echo "No application found by that name: $appname.app"
fi

Extended version du script

Utilisation: iphone-app-folder "My App"

#!/bin/bash
appname=""
[ -z "$appname" ] && read -p "Application name : " appname

apppath=$(find ~/Library/Developer/CoreSimulator/Devices -name "$appname.app" -print -quit)
if [[ ! -z $apppath ]]; then
    appbundle=$(osascript -e "id of app \"$apppath\"")
    echo "Found app $appname (${appbundle})"
    echo -e "3[1;30m$apppath3[0m"
    plists=$(find ~/Library/Developer/CoreSimulator/Devices -name "$appbundle.plist" -print -quit)
    count=$(echo plists | wc -l | sed "s/ //g")
    if [[ $count -eq 1 ]] && [[ -f "$plists" ]]; then
        echo -e "3[1;32mUserDefaults found for $appname3[0m"
        echo -e "3[1;30m$plists3[0m"
        plistutil -i "$plists"
        /usr/bin/open $(dirname "$plists")
    elif [[ ${#plists} -gt 0 ]]; then
        echo -e "3[1;32mUserDefaults found for $appname3[0m"
        i=1
        while read line; do
            echo "[${i}] ${line} "
            i=$((i+1))
        done < <(echo "$plists")
        echo
        read -p "Select defaults to read: [1-${count}] " choice
        plist=$(echo ${plists} | sed -n "${choice}p")
        plistutil -i "$plist"
        /usr/bin/open $(dirname "$plist")
    else
        echo -e "3[31mNo UserDefaults plist found for $appname3[0m"
    fi
else
    echo -e "3[31mNo application found by that name: $appname.app3[0m"
fi

trouvé app My App (com.organisation.MyApp) /Users/organisation/Library/Developer/CoreSimulator/Devices/3E4C8DC3-6FF4-428F-A624-B78DBE0B8C83/data/Containers/Bundle/Application/960A5232-219D-4C46-8CA3-01E259D8DDAD/mon application.app

UserDefaults trouvé pour Mon Application

Mac App

defaults read com.bundleid.app
2
répondu Atika 2017-11-09 14:20:21

vous pouvez enregistrer chaque valeur que vous définissez, comme:

NSLog(@"%@",[[NSUserDefaults standardDefaults] stringForKey:@"WhateverTheKeyYouSet"]);
1
répondu Tom Irving 2013-04-02 10:35:26

Dans Swift 2.2

let path = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
let folder = path[0]
NSLog("Your NSUserDefaults are stored in this folder: \(folder)/Preferences")

affichera L'emplacement du dossier plist de NSUserDefaults dans la console de débogage Xcode. Copiez la chaîne de chemin. Ouvrez votre Finder, sélectionnez Go to Folder dans le menu Go, collez la chaîne de chemin. Double-cliquez sur le fichier plist. Vous verrez le contenu dans votre éditeur Xcode.

travaux en simulateur seulement

Merci Au Château De Niels

1
répondu charles.cc.hsu 2016-04-05 09:16:08

je garde un raccourci sur mon bureau vers le dossier du simulateur où il garde les applications, à savoir:

/Users/gary/Library/Application Support/iPhone Simulator/User/Applications

Trié par date la plus récente, puis allez simplement dans la Bibliothèque/Préférences la plus récente du dossier app et de voir le fichier dans l'éditeur plist.

1
répondu progrmr 2016-04-12 07:33:45

Swift 3

print(UserDefaults.standard.dictionaryRepresentation())
1
répondu Ego Slayer 2016-10-09 18:02:05

pour MacOS apps

Aller à: / Users / {User} / Library/Containers / com.{de votre entreprise}.{votre app}/Données/Bibliothèque/Préférences et ouvrez votre application pList avec Xcode.

1
répondu Uwe 2018-02-25 11:48:36

après avoir lu la réponse acceptée de cette question, j'ai mis en place ce script simple qui ouvre les fichiers plist utilisés par le simulateur iOS pour stocker les préférences NSUserDefaults , et bien qu'il suppose une certaine configuration (correspond parfaitement à la mienne), il peut fonctionner comme un point de départ pour d'autres.

$ cat open-prefs-plist.sh
#!/bin/sh

# The project name based on the workspace path, e.g. "MyProject" from "./MyProject.xcworkspace"
WORKSPACE_NAME=$(echo `find . -name *.xcworkspace -type d -exec basename {} \;` | cut -d'.' -f1)
SIMULATOR_PATH="$HOME/Library/Application Support/iPhone Simulator"
# The App's bundle ID taken from its info plist, e.g "com.myproject" from "./MyProject/MyProject-Info.plist"
BUNDLE_ID=`/usr/libexec/PlistBuddy -c Print:CFBundleIdentifier $WORKSPACE_NAME/$WORKSPACE_NAME"-Info.plist"`
# Open all plist files in the simulator path that match the app's bundle ID 
# normally one per iOS version
find "$SIMULATOR_PATH" -name $BUNDLE_ID".plist" -type f -print0 \
    | while IFS= read -r -d '' PLIST; do
    echo $PLIST
    open "$PLIST"
done

exemple de placement:

$ ls -1
MyProject
MyProject Tests
MyProject.xcodeproj
MyProject.xcworkspace
Podfile
open-prefs-plist.sh
0
répondu Ernesto MB 2014-09-02 06:44:24

pour OS X applications , au lieu de trouver le fichier plist par défaut de l'application, il est plus simple d'utiliser l'utilitaire en ligne de commande defaults .

NOM

 defaults -- access the Mac OS X user defaults system

SYNOPSIS

 defaults [-currentHost | -host hostname] read [domain [key]]

 defaults [-currentHost | -host hostname] read-type domain key

 defaults [-currentHost | -host hostname] write domain { 'plist' | key 'value' }

 defaults [-currentHost | -host hostname] rename domain old_key new_key

 defaults [-currentHost | -host hostname] delete [domain [key]]

 defaults [-currentHost | -host hostname] { domains | find word | help }

DESCRIPTION

defaults permet aux utilisateurs de lire, écrire, et supprimez Mac OS X user par défaut d'un shell en ligne de commande. Mac Les applications OS X et d'autres programmes utilisent le système par défaut pour enregistrer les préférences de l'utilisateur et d'autres informations qui doivent être maintenues lorsque les applications ne sont pas en cours d'exécution (tels que la police par défaut pour les nouveaux documents, ou la position d'un panneau d'information). Une grande partie de cette information est accessible au moyen d'une application.- le panel des préférences de cation, mais il y en a qui ne le sont pas, comme la position du panel D'information. Vous pouvez accéder à ceci information avec defaults

exemple:

$ defaults read com.apple.Safari
{
    AutoplayPolicyWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000";
    AutoplayQuirksWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000";
    DefaultBrowserPromptingState2 = 4;
    ...
0
répondu weevilgenius 2018-09-06 20:55:44