Простой способ увидеть сохраненные NSUserDefaults?

Есть ли способ посмотреть, что было сохранено в NSUserDefaults напрямую? Я бы хотел посмотреть, правильно ли сохранились мои данные.

Комментарии к вопросу (1)

Вы можете распечатать все текущие NSUserDefaults в журнал:

Только ключи:

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

Ключи и значения:

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Комментарии (3)
Решение

Вы можете найти файл pList для вашего приложения в симуляторе, если перейдете по ссылке:

/users/ваше имя пользователя/Library/Application Support/iPhone Simulator//Applications

В этом каталоге есть куча каталогов с GUID-именами. Если вы работаете над несколькими приложениями, их будет несколько. Поэтому вам нужно найти бинарник вашего приложения:

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

Затем перейдите в каталог Library/Preferences в директории GUID. Итак:

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

Вы должны найти файл, который выглядит следующим образом:

.foo.pList

Откройте его в редакторе pList и просматривайте сохраняемые значения до бесконечности.

Комментарии (11)

<Н1>в Swift мы можем использовать следующие:-</Н1>

<Н1>Свифт 3.х & 4.х</Н1>

<Н3>для получения ключей & значения:</Н3> для (ключ, значение) в UserDefaults.стандарт.dictionaryRepresentation() { печать(" и(ключ) = (значение) \н и") }

<Н3>для получения полного представления словаря по умолчанию для пользователя:</Н3>

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

<Н3>получение ключей:</Н3> // С помощью дампа так как ключи есть массив строк. дамп(массив(UserDefaults.стандарт.dictionaryRepresentation().ключи))

<Н3>для получения значения:</Н3> Мы можем использовать дамп здесь, а также, но это будет вернуть полную иерархию наследования каждого элемента в массиве значений. Если требуется более подробная информация об объектах, а затем использовать дамп, то вперед и с нормальной инструкцией Print.

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

<Н1>Свифт 2.х</Н1>

<Н3>для получения полного представления словаря по умолчанию для пользователя:</Н3>

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

<Н3>получение ключей:</Н3>

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

<Н3>для получения значения:</Н3>

print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().values.array)
Комментарии (0)

Вы можете проверить значения для каждого ключа в массиве, возвращаемые с помощью

[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]
Комментарии (1)

Я иногда использую следующий код, чтобы распечатать место моего NSUserDefaults файл при запуске в симуляторе

в <предварительно> Списка NSArray путь = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, да); NSString папка = [путь objectAtIndex:0]; NSLog(@"у вашего NSUserDefaults хранятся в этой папке: я %@/настройки&;, папки); </пред>

Это дает путь в папку установки

В вашем NSUserDefaults хранятся в этой папке: /пользователи/замка/библиотека/поддержка приложений/симулятор iPhone/пользователей/приложений/BC5056A0-F46B-4AF1-A6DC-3A7DAB984960/библиотека/предпочтения

Вашего NSUserDefaults файл находится в папке предпочтения и названы в соответствии с вашим префиксом и именем appliation например

dk.castleandersen.dreamteam.grid.plist

Я ожидаю то же самое быть верным для реального устройства.

Комментарии (1)

В Swift 4.0

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

потому что dictionaryRepresentation из NSUserDefaults.standardUserDefaults() возвращает [строкой : какой-либо объект]

Мы бросили его в NSDictionary`. Затем, заключив его в скобки '()' позволит нам позвонить .allKeys или .значениями так же, как и на любом NSDictionary

 print((UserDefaults.standard.dictionaryRepresentation() as NSDictionary).allKeys)
Комментарии (0)

Использовать ниже код.

NSLog(@"NSUserDefault: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Комментарии (2)

Для Xcode 7

NSUserDefaults standardDefaults хранятся здесь:

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

NSUserDefaults для люкс/приложение группы хранятся здесь:

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

Я бы рекомендовал использовать https://github.com/scinfu/NCSimulatorPlugin потому что в эти дни все позади идентификаторы UUID и боль, чтобы найти. Это позволяет легко добраться до вашего приложения симулятор каталогах.

Комментарии (0)

Легко, так как файл plist имя файла <приложение-набор-идентификатор>.файл plist, можно использовать найти команду, чтобы найти его путь. Но это будет очень долго если вы будете искать весь компьютер, так что вы должны выбрать хороший объем, как ~/библиотеки/разработчик/CoreSimulator для Xcode 6.

пример:

найти ~/библиотеки/разработчик/CoreSimulator -тип F -именем com.круто.приложение.файл plist`

на выходе будет что-то вроде этого...

/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

И оттуда вы можете использовать команду открыть. Или если вы используете iTerm2, просто нажмите на путь, чтобы открыть его.

Комментарии (0)

Для ОС Х приложений, вместо того, чтобы найти применение'ы по умолчанию plist файла, проще использовать по умолчанию в командной строке утилиты.

имя

по умолчанию-доступ для Mac OS Х пользователей по умолчанию

краткое

по умолчанию [-currentHost | -хоста, хоста] читать [домен [ключ]]

по умолчанию [-currentHost | -хоста hostname] читать-типа домен ключ

по умолчанию [-currentHost | -хоста, хоста] писать домен { 'файлы' | ключ 'значение' }

по умолчанию [-currentHost | -хоста hostname] переименовать домен old_key new_key

по умолчанию [-currentHost | -хоста hostname] удалить [домен [ключ]]

по умолчанию [-currentHost | -хоста, хоста] { доменов | найти слово | помощь }

описание

по умолчанию позволяет пользователям читать, писать и удалять Мак ОС Х пользователей по умолчанию из командной строки оболочки. Мак ОС Х приложений и других программ использовать систему по умолчанию для записи пользовательских настроек и других информации, которая должна поддерживаться в случае, когда приложения не'т бежать (такие как шрифт по умолчанию для новых документы, или положение информационной панели). Большая часть этой информации доступна через приложе- катион'панели настроек, но некоторые из это'т, как положение на панели "информация". Вы можете доступ к этой информации с по умолчанию

Пример:

$ defaults read com.apple.Safari
{
    AutoplayPolicyWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000";
    AutoplayQuirksWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000";
    DefaultBrowserPromptingState2 = 4;
    ...
Комментарии (0)

Я построил этот метод основан на Морион'ы предложение для лучшего представления. Использовать его при вызове [сам 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]);
    }
}
Комментарии (3)

Искать приложение для Mac под названием SimPholders2. Он живет в строке меню и список всех симуляторов вы've использовали, а потом показывает каждого из ваших приложений. Выберите один, и вы получите новое окно Finder, уже открытое приложение's директории. Это делает его супер просто, чтобы найти ваше приложение и все это'ы каталогах. Это'ы огромная экономия времени (и я охотно пожертвовал автору).

Комментарии (0)

Вы можете вести NSLog для каждого заданного значения, например:

NSLog(@"%@",[[NSUserDefaults standardDefaults] stringForKey:@"WhateverTheKeyYouSet"]);
Комментарии (0)

Я держу ярлыков на моем рабочем столе в симулятор'папка, где сохраняются приложения, т. е.:

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

Отсортированный по последней дате, то просто заходите в последней библиотеке папке приложения/Настройки и просмотра файла в файле plist редактор.

Комментарии (0)

Приложение Симулятор

Эта поисковая скрипт на имя приложения, получения код пакета, и открывать папки, содержащие файлы plist.

#!/bin/bash

appname="$1"
[ -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 "$1")"' -- {} \;
else
    echo "No application found by that name: $appname.app"
fi

Расширенную версию скрипта

Использование: iPhone-приложение-папка "Мой приложение"в


#!/bin/bash
appname="$1"
[ -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 "\033[1;30m$apppath\033[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 "\033[1;32mUserDefaults found for $appname\033[0m"
        echo -e "\033[1;30m$plists\033[0m"
        plistutil -i "$plists"
        /usr/bin/open $(dirname "$plists")
    elif [[ ${#plists} -gt 0 ]]; then
        echo -e "\033[1;32mUserDefaults found for $appname\033[0m"
        i=1
        while read line; do
            echo "[${i}] ${line} "
            i=$((i+1))
        done < 
Комментарии (0)

В Swift 2.2

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

распечатает NSUserDefaults'ы plist файла папку в консоли отладки в Xcode. Скопируйте строку пути. Откройте Finder и выберите Перейти в папку в зайдите пункт меню, вставить строку пути. Дважды щелкните файл plist. Вы увидите содержимое вашего редактора в Xcode.

Работать только в симуляторе

Спасибо @Замок Нильс

Комментарии (1)

Свифт 3

print(UserDefaults.standard.dictionaryRepresentation())
Комментарии (0)

Для приложений для macOS Перейти к: /пользователи/{пользователь}/библиотека/контейнеры/ком.{компании}.{приложения}/данных/библиотеки/Preferences и открыть ваше приложение's в файл plist в Xcode.

Комментарии (0)

После прочтения этот вопрос'ы принято отвечать, я собрал этот простой скрипт, который открывает файл plist файлы, используемые в iOS симулятор для хранения `NSUserDefaults предпочтения, и хотя это предполагает определенную настройку (подходит помоему отлично), он может работать в качестве отправной точки для других.

$ 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

Пример размещения:

$ ls -1
MyProject
MyProject Tests
MyProject.xcodeproj
MyProject.xcworkspace
Podfile
open-prefs-plist.sh
Комментарии (2)

Вы можете пользователя это, чтобы получить полный путь на предпочтениях пользователей, Кеша и многие другие данные

печать(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, правда))`

Комментарии (0)