Где хранится хранилище Mac NSUserDefaults?
Я использую NSUserDefaults для хранения некоторых данных в своем приложении.
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"dummy string" forKey:@"lastValue"];
[prefs synchronize];
В целях тестирования мне нужно увидеть файл plist System Preferences, где хранятся мои данные NSUserDefaults на Mac.
Я знаю, где пользовательские значения по умолчанию для пользователей iOS хранятся, но я не знаю о приложении Mac. Где хранится хранилище Mac NSUserDefaults?
Ответы
Ответ 1
Их можно найти в нескольких местах:
~/Library/Preferences/com.example.myapp.plist
~/Library/SyncedPreferences/com.example.myapp.plist
и если песочница
~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist
~/Library/Containers/com.example.myapp/Data/Library/SyncedPreferences/com.example.myapp.plist
Ответ 2
В ~/Library/Preferences/com.example.myapp.plist
.
Ответ 3
(Xcode 7.3.1, macOS 10.11.6)
Дополнительно, если вы используете группы приложений
if let prefs = NSUserDefaults(suiteName: "group.groupApps") {
...
}
Файл plist будет здесь:
~/Library/Групповые контейнеры/группа. groupApps/Library/Preferences/group.groupApps.plist
Ответ 4
В Сьерра я нашел данные здесь: ~/Library/Application Support/
.
Ответ 5
Еще одно возможное место для этих данных вступает в игру, когда вы пытаетесь разобраться на игровой площадке. Я экспериментировал с UserDefaults на игровой площадке, используя XCode 8.3 и Swift 3, и хотел увидеть результирующий файл plist. После некоторой детективной работы (файлы UserDefaults имеют идентификатор пакета в имени файла и вызов Bundle.main.bundleIdentifier на игровой площадке дает идентификатор XCode), я с удивлением обнаружил, что данные UserDefaults были добавлены в:
~/Library/Preferences/com.apple.dt.Xcode
Другими словами, ключи и значения добавляются в файл настроек XCode! Я дважды проверял, придумывая очень маловероятные строки для ключей, и они действительно были добавлены там. У меня не хватило смелости попробовать использовать некоторые ключи, которые уже использовались XCode, но осторожность кажется хорошей здесь.