19 ответов:
вы можете найти файл pList для вашего приложения в симуляторе, если вы перейдете к:
/пользователи/имя пользователя / библиотека / поддержка приложений / симулятор iPhone / / приложения
этот каталог имеет кучу GUID именованных каталогов. Если вы работаете над несколькими приложениями, их будет несколько. Таким образом, вам нужно найти двоичное приложение:
find . -name foo.app ./1BAB4C83-8E7E-4671-AC36-6043F8A9BFA7/foo.appзатем перейдите в каталог библиотека / настройки в каталоге GUID. Итак:
cd 1BAB4C83-8E7E-4671-AC35-6043F8A9BFA7/Library/Preferencesвам необходимо найти файл, который выглядит так:
<Bundle Identifier>.foo.pListОткройте это в Редакторе pList и просмотрите сохраненные значения в своем сердце.
вы можете распечатать все текущие NSUserDefaults в журнал:
просто клавиши:
NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]);ключи и значения:
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
в Swift мы можем использовать следующее:-
Swift 3.x & 4.x
для получения всех ключей и значений:
for (key, value) in UserDefaults.standard.dictionaryRepresentation() { print("\(key) = \(value) \n") }для получения полного словарного представления пользовательских значений по умолчанию:
print(Array(UserDefaults.standard.dictionaryRepresentation()))для получения ключей:
// Using dump since the keys are an array of strings. dump(Array(UserDefaults.standard.dictionaryRepresentation().keys))для получения значения:
мы также можем использовать дамп здесь, но это вернет полную иерархию наследования каждого элемента в массиве значений. Если больше требуется информация об объектах, затем используйте дамп, иначе продолжайте обычную инструкцию печати.
// dump(Array(UserDefaults.standard.dictionaryRepresentation().values)) print(Array(UserDefaults.standard.dictionaryRepresentation().values))Swift 2.x
для получения полного словарного представления пользовательских значений по умолчанию:
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation())для получения ключей:
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array)для получения значения:
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().values.array)
вы можете проверить значения для каждого ключа в массив, возвращаемый
[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]
Я иногда использую следующий фрагмент для распечатки местоположения моего файла NSUserDefaults при запуске в симуляторе
NSArray *path = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES); NSString *folder = [path objectAtIndex:0]; NSLog(@"Your NSUserDefaults are stored in this folder: %@/Preferences", folder);Он дает путь к папке настроек
ваши NSUserDefaults хранятся в этой папке: / Users / castle / Library / Application Support / iPhone Simulator / User/Applications/BC5056A0-F46B-4AF1-A6DC-3A7DAB984960/Library / Preferences
ваш файл NSUserDefaults находится в папке настроек и назван в соответствии с вашим префиксом и именем приложения, например
dk.castleandersen.dreamteam.grid.plistЯ ожидаю, что то же самое будет верно для фактического устройства.
использовать ниже код.
NSLog(@"NSUserDefault: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
В Swift 4.0
//func dictionaryRepresentation() -> [String : AnyObject]потому что словарное представление NSUserDefaults.standardUserDefaults() возвращает [String: AnyObject]
мы бросили его в
NSDictionary. Затем, окружив его в скобках '() ' позволит нам позвонить .все ключи или .allValues так же, как и на любом NSDictionaryprint((UserDefaults.standard.dictionaryRepresentation() as NSDictionary).allKeys)
легко, так как имя файла plist
<app-bundle-identifier>.plist, вы можете использоватьfindкоманда, чтобы найти свой путь. Но это займет очень много времени, если вы ищете весь компьютер, так что вы должны выбрать хороший объем, как~/Library/Developer/CoreSimulatorдля Xcode 6.пример:
find ~/Library/Developer/CoreSimulator -type f -name com.awesome.app.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и оттуда вы можете использовать
Для Xcode 7
NSUserDefaults standardDefaults хранятся здесь:
/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Data/Application/{UUID}NSUserDefaults для набор / группа приложений хранятся здесь:
/Users/{USER}/Library/Developer/CoreSimulator/Devices/{UUID}/data/Containers/Shared/AppGroup/{UUID}/Library/Preferences/{GROUP_NAME}.plistЯ бы рекомендовал использовать https://github.com/scinfu/NCSimulatorPlugin потому что в эти дни все позади UUIDs и боль, чтобы найти. Это позволяет легко получить доступ к каталогам приложений симулятора.
Я построил этот метод на основе предложения Мориона для лучшего представления. Используйте его, позвонив
[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]); } }
ищите приложение для Mac под названием SimPholders2. Он живет в строке меню и перечисляет все используемые вами симуляторы, а затем показывает каждое из ваших приложений. Выберите один, и вы получите новое окно Finder, уже открытое в каталог приложения. Это делает его очень легко найти ваше приложение и все его каталоги. Это же огромная экономия времени (и я охотно пожертвовал автору).
Приложение
этот скрипт оболочки ищет имя приложения, получить bundle id и открыть папки, содержащие файлы 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Расширенная версия скрипта
использование:
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найдено приложение мое приложение (com.организация.Приложение) /Users/organisation/Library/Developer/CoreSimulator/Devices/3E4C8DC3-6FF4-428F-A624-B78DBE0B8C83/data/Containers/Bundle/Application/960A5232-219D-4C46-8CA3-01E259D8DDAD/мое приложение.приложение
UserDefaults найдено для моего приложения
Mac App
defaults read com.bundleid.app
вы можете NSLog каждое значение, которое вы установили, например:
NSLog(@"%@",[[NSUserDefaults standardDefaults] stringForKey:@"WhateverTheKeyYouSet"]);
В Swift 2.2
let path = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true) let folder = path[0] NSLog("Your NSUserDefaults are stored in this folder: \(folder)/Preferences")распечатает расположение папки plist файла NSUserDefaults в консоли отладки Xcode. Скопируйте строку пути. Откройте Finder, выберите Перейти в папку в пункте меню Go, вставьте строку пути. Дважды щелкните файл plist. Вы увидите содержимое в Редакторе Xcode.
работает только в симуляторе
Спасибо @Niels Castle
Я сохраняю ярлык на своем рабочем столе в папке симулятора, где он хранит приложения, т. е.:
/Users/gary/Library/Application Support/iPhone Simulator/User/Applicationsсортировка по самой последней дате, затем просто перейдите в самую последнюю библиотеку папок приложений/настройки и просмотрите файл в Редакторе plist.
для приложений MacOS
Перейдите к: / Users / {User} / Library/Containers / com.{ваша компания.}{ваше приложение} / Data/Library / Preferences и откройте pList вашего приложения с помощью Xcode.
прочитав принятый ответ на этот вопрос, я собрал этот простой скрипт, который открывает файлы 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
на приложения OS X, вместо того, чтобы найти plist-файл по умолчанию приложения, проще использовать
defaultsутилиты командной строки.имя
defaults -- access the Mac OS X user defaults systemсправка
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 }описание
defaultsпозволяет пользователям читать, писать и удалять пользовательские настройки Mac OS X из командной строки. Мак Приложения OS X и другие программы используют система по умолчанию для записи пользовательских настроек и других сведения, которые должны поддерживаться, когда приложения не запущены (например, шрифт по умолчанию для new документы, или положение информационной панели). Большая часть этой информации доступна через приложение- панель предпочтений катиона, но некоторые из них не являются, например, положение информационной панели. Вы можете доступ к этой информации сdefaultsпример:
$ defaults read com.apple.Safari { AutoplayPolicyWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000"; AutoplayQuirksWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000"; DefaultBrowserPromptingState2 = 4; ...
Comments