Подтвердить что ты не робот

Где хранится хранилище Mac NSUserDefaults?

Я использую NSUserDefaults для хранения некоторых данных в своем приложении.

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

В целях тестирования мне нужно увидеть файл plist System Preferences, где хранятся мои данные NSUserDefaults на Mac.

Я знаю, где пользовательские значения по умолчанию для пользователей iOS хранятся, но я не знаю о приложении Mac. Где хранится хранилище Mac NSUserDefaults?

4b9b3361

Ответ 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, но осторожность кажется хорошей здесь.