web-dev-qa-db-fra.com

Où sont stockées les données NSUserDefaults d'une application Mac?

J'utilise NSUserDefaults pour stocker des données dans mon application.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"dummy string" forKey:@"lastValue"];
[prefs synchronize];

À des fins de test, je dois voir le fichier plist des préférences système où mes données NSUserDefaults sont enregistrées sur le Mac.

Je sais où les valeurs par défaut de l'utilisateur de l'application iOS sont stockées, mais je ne connais pas l'application mac. Où sont stockées les données NSUserDefaults d'une application Mac?

60
ahmadbaig

Ils peuvent être trouvés dans plus d'un endroit:

~/Library/Preferences/com.example.myapp.plist
~/Library/SyncedPreferences/com.example.myapp.plist

et en bac à sable

~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
~/Library/Containers/com.example.myapp/Data/Library/SyncedPreferences/com.example.myapp.plist
148
erkanyildiz

Dans ~/Library/Preferences/com.example.myapp.plist.

20
duskwuff

(Xcode 7.3.1, macOS 10.11.6)

Pour plus, si vous utilisez des groupes d'applications

    if let prefs = NSUserDefaults(suiteName: "group.groupApps")  {
       ...
    }

le fichier plist sera ici:

~/Bibliothèque/Conteneurs de groupe/groupe. groupApps/Library/Preferences/group.groupApps.plist

3
hstdt

Sur Sierra, j'ai trouvé les données ici: ~/Library/Application Support/.

1
funroll

Un autre emplacement possible pour ces données entre en jeu lorsque vous essayez des choses dans une aire de jeux. J'expérimentais avec UserDefaults dans un Playground, en utilisant XCode 8.3 et Swift 3, et je voulais voir le fichier plist résultant. Après quelques travaux de détective (les fichiers UserDefaults ont l'identifiant de bundle dans le nom de fichier et l'appel) Bundle.main.bundleIdentifier dans un Playground donne l'identifiant XCode) J'ai trouvé à ma grande surprise que les données UserDefaults ont été ajoutées à:

~/Library/Preferences/com.Apple.dt.Xcode

En d'autres termes, les clés et les valeurs sont ajoutées au fichier de préférences XCode! J'ai revérifié en proposant des chaînes très improbables pour les clés et elles ont en effet été ajoutées là. Je n'ai pas eu le courage d'essayer d'utiliser certaines touches qui étaient déjà utilisées par XCode mais la prudence semble bonne ici.

0
M. van den Berg